剑指offer的Python实现之二叉树(3):树的深度
2019-02-14 20:13
393 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_40604642/article/details/86623607
树的深度及其相关题目
目录
1. 二叉树的深度
题目描述:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题思路:
一棵树的深度为其左、右子树的较大值加1。
[code]class Solution: def TreeDepth(self, pRoot): # write code here if not pRoot: return 0 return max(self.TreeDepth(pRoot.left),self.TreeDepth(pRoot.right))+1
2. 平衡二叉树
题目描述:
输入一颗二叉树,判断该二叉树是否是平衡二叉树。
解题思路:
平衡二叉树的定义:如果某棵二叉树中任意节点的左、右子树的深度相差都不超过1,那么它就是一棵平衡二叉树。
由平衡二叉树的定义可知。要判断一棵树是否为平衡二叉树,我们只需在遍历树的每一节点时调用上一题“二叉树的深度”中的TreeDepth函数得到左、右子树的深度,在判断是否每个节点的左、右子树深度都不超过1即可。
[code]class Solution: def IsBalanced_Solution(self, pRoot): # write code here if not pRoot: return True if abs(self.TreeDepth(pRoot.left)-self.TreeDepth(pRoot.right))>1: return False return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right) def TreeDepth(self, pRoot): if not pRoot: return 0 return max(self.TreeDepth(pRoot.left),self.TreeDepth(pRoot.right))+1
相关文章推荐
- 二叉树的深度[剑指offer]之python实现
- 剑指offer----二叉树的深度----java实现
- 剑指offer之二叉树的深度(Python)
- 剑指offer第三十五题【二叉树的深度】c++实现
- 【剑指offer】python实现二叉树中和为某一值的路径
- 二叉树的镜像[剑指offer]之python实现
- 【剑指offer】python实现”从上往下打印二叉树“
- 剑指offer-二叉树深度
- 剑指Offer面试题59:对称二叉树 Java实现
- 剑指offer之二叉树中和为某一值的路径(Python)
- [牛客网,剑指offer,python] 重建二叉树
- python 牛客网 剑指offer 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 调整数组顺序使奇数位于偶数前面[剑指offer]之python实现
- 剑指offer----从上到下打印二叉树----java实现
- 剑指offer:二叉树的镜像(python)
- 剑指offer--二叉树的深度
- 剑指offer之二叉树的深度
- 剑指offer面试题39:二叉树深度以及判断平衡二叉树
- 平衡二叉树[剑指offer]之python实现
- 【剑指Offer面试编程题】 题目1350:二叉树的深度--九度OJ