首页 > 其他 > 详细

110.平衡二叉树

时间:2020-06-15 22:29:43      阅读:52      评论:0      收藏:0      [点我收藏+]
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# 这道题是用深搜加上剪枝的算法来做的。
# 遍历每一层节点,从最后一层开始判断,如果两层之差大于2,就直接返回负一
class Solution:
def isBalanced(self, root: TreeNode) -> bool:
return self.recus(root) != -1
def recus(self,root):
# 判断根节点是否为None
if not root : return 0
left = self.recus(root.left)
if left == -1 : return -1
right = self.recus(root.right)
if right == -1 : return -1
# 判断左右两个子树的高度差是否小于2,如果是就返回真正的层数(层数多的那个)
# 如果不是,就返回-1
return max(left,right) + 1 if abs(left - right) < 2 else -1

110.平衡二叉树

原文:https://www.cnblogs.com/cong12586/p/13137811.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!