这期内容当中小编将会给大家带来有关python中的平衡二叉树该怎么理解,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过 1,那么它就是一棵平衡二叉树。
给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。
给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \ 4 4返回 false 。
节点=>深度
字典中; 然后再遍历一遍节点, 针对每个节点, 判断它左右子节点的深度是否满足要求, 所有节点都满足的话才说明平衡. 但是这种方案需要遍历两边节点, 效率不太高, 如何一次性遍历得出结果呢?class Solution: def isBalanced(self, root: TreeNode) -> bool: # 递归, 边求深度边判断, 返回深度, 全局变量标记当前是否平衡 balance = True def getDepth(node): nonlocal balance if not node or not balance: # 递归出口: 如果节点为空或者不平衡, 返回0, 无需继续递归了 return 0 ldepth = getDepth(node.left) rdepth = getDepth(node.right) if abs(ldepth - rdepth) > 1: # 不平衡, 全局变量设为false balance = False # 返回当前节点自身的深度 return max(ldepth, rdepth) + 1 getDepth(root) return balance
上述就是小编为大家分享的python中的平衡二叉树该怎么理解了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4633874/blog/4545929