题目:输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点形成树的一条路径,最长路径的长度为树的深度。
分析:从另一个角度理解树的深度。如果一棵树只有一个节点的话,它的深度为1.如果根节点只有左子树而没有右子树,则树的深度为左子树的深度加1,人同样如果根节点只有右子树而没有左子树,那么树的深度为右子树的深度加1.如果既有左子树又有右子树,那么该树的深度为左右子树深度的较大值加1.
代码如下:
/**
* 题目:输入一颗二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点形成一条
* 路径,最长的路径长度为树的深度。
*/
package problem2;
/**
* @author Hutongling
*
* @time:2017年3月29日 下午4:31:36
*/
public class 二叉树的深度 {
static int treeDepth(TreeNode root){
if(root==null)
return 0;
int left=treeDepth(root.getLeftChild());
int right=treeDepth(root.getRightChild());
return (left>right)? left+1:right+1;
}
public static void main(String[] args) {
TreeNode root=new TreeNode(1);
TreeNode rLeft=new TreeNode(2);
TreeNode rRight=new TreeNode(3);
TreeNode rLLeft=new TreeNode(4);
TreeNode rLRight=new TreeNode(5);
TreeNode rRLeft=new TreeNode(6);
TreeNode rRRight=new TreeNode(7);
root.leftChild=rLeft;
root.rightChild=rRight;
rLeft.leftChild=rLLeft;
rLeft.rightChild=rLRight;
rRight.leftChild=rRLeft;
rRight.rightChild=rRRight;
System.out.println("二叉树的深度为:"+ treeDepth(root));
}
}
代码结果:
二叉树的深度为:3