题目
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题
package demo18;
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
/**
* 获取二叉树深度
* @author mengfeiyang
*
*/
public class Solution2 {
public int TreeDepth(TreeNode pRoot){
if(pRoot ==null)
return 0;
int nLeft=TreeDepth(pRoot.left);
int nRight=TreeDepth(pRoot.right);
return nLeft>nRight?(nLeft+1):(nRight+1);
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
Solution2 s2 = new Solution2();
/**
* 构造二叉树
* 1
* / \
* 2 3
* / \ / \
* 4 5 6 7
*/
TreeNode root = new TreeNode(1);
TreeNode left = new TreeNode(2);
TreeNode right = new TreeNode(3);
TreeNode left_1 = new TreeNode(4);
TreeNode right_1 = new TreeNode(5);
TreeNode right_2 = new TreeNode(6);
TreeNode left_2 = new TreeNode(7);
left.left = left_1;
left.right = right_1;
right.left = left_2;
right.right = right_2;
root.left = left;
root.right = right;
System.out.println(s2.TreeDepth(root));// 输出结果为:3
}
}