题解 | #判断是不是平衡二叉树#

判断是不是平衡二叉树

https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return bool布尔型
#
import math
class Solution:

    def IsBalanced_Solution(self , pRoot: TreeNode) -> bool:
        # write code here
        # 先判空
        if not pRoot:
            return True
        # 这里只是算了根节点的子树高度
        left = self.dfs(pRoot.left)
        right = self.dfs(pRoot.right)
        if abs(left-right)<2:
            # 我们还要继续判断左右子树是否也是平衡二叉树
            return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right) 
        else:
            return False

    def dfs(self,root:TreeNode): 
        # 这里需要return 0
        if not root:
            return 0
        # 你需要在这里比较子树高度
        left = self.dfs(root.left)
        right = self.dfs(root.right)
        # 返回最大子树高度
        if left>right:
            return left+1
        else:
            return right+1  
  1. DFS和BFS和层次遍历的代码要背一下
  2. 链表考指针,树考递归
剑指offer刷题笔记 文章被收录于专栏

24秋招剑指offer刷题的笔记

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务