美文网首页
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-平衡二叉树

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

  • 剑指 offer:39、平衡二叉树

    39. 平衡二叉树 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路: 平衡二叉树:Wiki:在...

  • 平衡二叉树

    1)什么是平衡二叉树?2)平衡二叉树的特点是什么?3)平衡二叉树的构建实现? 一、什么是平衡二叉树?假设有一组数据...

  • 面试题:平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 知识点 平衡二叉树 Qiang的思路 平衡二叉树是指一个...

  • Leetcode 110 平衡二叉树

    平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每...

  • 二叉树2-平衡二叉树、完全二叉树、二叉树剪枝

    110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 一棵高度平衡二叉树定义为:一个二叉树每个节点 ...

  • Leetcode题解 - Easy - 4

    110- 平衡二叉树 问题 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一...

  • TreeMap源码分析

    TreeMap 平衡二叉树 平衡二叉树(Self-balancing binary search tree)又被称...

  • 图的应用[平衡二叉树以及散列查找]

    平衡⼆二叉树( AVL 树) 平衡⼆二叉树(Self-Balancing Binary Search Tree 或...

  • [LeetCode]110. 平衡二叉树

    110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个...

网友评论

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

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