美文网首页
python-平衡二叉树

python-平衡二叉树

作者: JerryLoveCoding | 来源:发表于2020-03-19 16:32 被阅读0次

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

    思路:
    对输入的二叉树进行后序遍历,对于每个遍历的节点计算其左子树右子树的深度;一旦有深度差大于1的情况下,直接返回False。否则持续遍历,并且return当前节点的最大深度。

    代码:

    # 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:
            self.res = True
            self.depth(root)
            return self.res 
            
        def depth(self, root):
            if not root:
                return 0  # 没有子树,该子树深度就为0
            # 后序遍历是关键
            left_depth = self.depth(root.left)
            right_depth = self.depth(root.right)
    
            # 判断左右子树深度差
            if abs(left_depth - right_depth) > 1:  # abs求绝对值
                self.res = False
            print(max(left_depth, right_depth))
    
            # 返回遍历的当前节点的最大深度
            return max(left_depth, right_depth) + 1
    

    相关文章

      网友评论

          本文标题:python-平衡二叉树

          本文链接:https://www.haomeiwen.com/subject/bzslyhtx.html