目录
1.题目描述:2.解题思路:3.编程实现(Java):
1.题目描述:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
2.解题思路:
本题相对比较简单。根据二叉树深度的定义,我们有以下理解:如果一棵树只有一个结点,那么它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度为其左子树深度加1;相反,如果根结点只有右子树而没有左子树,那么深度为右子树深度加1;如果既有左子树又有右子树,那么该树的深度为左、右子树深度的较大值加1。
因此,很明显本题应该使用递归的思路来解决。。
3.编程实现(Java):
public class BinaryTreeDepth_3 {
public static void main(String
[] args
) {
TreeLinkNode root
= new TreeLinkNode(1);
TreeLinkNode node2
= new TreeLinkNode(2);
TreeLinkNode node3
= new TreeLinkNode(3);
TreeLinkNode node4
= new TreeLinkNode(4);
TreeLinkNode node5
= new TreeLinkNode(5);
TreeLinkNode node6
= new TreeLinkNode(6);
TreeLinkNode node7
= new TreeLinkNode(7);
root
.left
= node2
;
root
.right
= node3
;
node2
.left
= node4
;
node2
.right
= node5
;
node5
.left
= node7
;
node3
.right
= node6
;
System
.out
.println(treeDepth(root
));
}
static int treeDepth(TreeLinkNode root
) {
if (root
!= null
) {
int left
= treeDepth(root
.left
);
int right
= treeDepth(root
.right
);
return left
> right
? left
+ 1 : right
+ 1;
}
return 0;
}
static class TreeLinkNode {
int val
= 0;
TreeLinkNode left
= null
;
TreeLinkNode right
= null
;
public TreeLinkNode(int val
) {
this.val
= val
;
}
}
}