Day4 平衡二叉树【树】【存疑】【绕】

题目:
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
leetcode原题连接

思路:
递归(吐了
在【二叉树的深度】基础上进行代码修改
创建两个函数
函数depth:计算当前root节点的深度
函数isBalanced:判断是否平滑,即当前节点左子树深度与右子树深度之差 是否大于1,若大于则return False,反之,传入当前节点的左子树和右子树 继续递归。

存疑:
最后一行代码,若不加1,二叉树[1,2,2,3,3,null,null,4,4],会得到True,正确返回值应该是False

代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isBalanced(self, root: TreeNode) -> bool:
        if root is None:#边界条件
            return True
        left_depth=self.depth(root.left)
        right_depth=self.depth(root.right)
        if abs(right_depth-left_depth)>1:
            return False
        else:
            return self.isBalanced(root.left) and self.isBalanced(root.right)
        
    def depth(self,root):
        if root is None:
            return 0
        left_depth=self.depth(root.left)#当前节点左子树的深度
        right_depth=self.depth(root.right)#当前节点右子树的深度
        return max(left_depth+1,right_depth+1)#不加1会报错

猜你喜欢

转载自blog.csdn.net/weixin_47128888/article/details/112569942