一、问题描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
二、算法思想
1.判断是否是空树;
2.判断是否只有根节点;
3.递归遍历比较左右子树的深度,返回最大值+1。
三、代码实现
Python实现
class Solution:
def TreeDepth(self, pRoot):
# 二叉树是空树
if pRoot == None:
return 0
# 二叉树只有一个根节点
if pRoot.left == None and pRoot.right == None:
return 1
# 递归比较左右子树的深度
return max(self.TreeDepth(pRoot.left), self.TreeDepth(pRoot.right))+1
Java实现
public class Solution {
public int TreeDepth(TreeNode root) {
if(root == null)
return 0;
if(root.left == null && root.right == null)
return 1;
return TreeDepth(root.left)>TreeDepth(root.right)?TreeDepth(root.left)+1:TreeDepth(root.right)+1;
}
}
四、测试用例
1.空树
2.只有根节点
3.完全二叉树
4.只有左子树
5.只有右子树
6.不规则二叉树