二叉树的深度
2016-03-12 20:50
267 查看
题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度。
思路:如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1.如果既有左子树又有右子树,那该树的深度就是其左右子树深度的较大值加1. 可以用递归解决。
package offer;
/**
* 求二叉树的深度
*
*/
public class TreeDepth {
public static void main(String[] args) {
BinaryTreeNode root = new BinaryTreeNode(1);
BinaryTreeNode node1 = new BinaryTreeNode(2);
BinaryTreeNode node2 = new BinaryTreeNode(3);
root.right = node1;
node1.right = node2;
System.out.println(treeDepth(root));
}
public static int treeDepth(BinaryTreeNode root){
if(root==null)
return 0;
int left = treeDepth(root.left);
int right = treeDepth(root.right);
return (left>right)?(left+1):(right+1);
}
}
思路:如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1.如果既有左子树又有右子树,那该树的深度就是其左右子树深度的较大值加1. 可以用递归解决。
package offer;
/**
* 求二叉树的深度
*
*/
public class TreeDepth {
public static void main(String[] args) {
BinaryTreeNode root = new BinaryTreeNode(1);
BinaryTreeNode node1 = new BinaryTreeNode(2);
BinaryTreeNode node2 = new BinaryTreeNode(3);
root.right = node1;
node1.right = node2;
System.out.println(treeDepth(root));
}
public static int treeDepth(BinaryTreeNode root){
if(root==null)
return 0;
int left = treeDepth(root.left);
int right = treeDepth(root.right);
return (left>right)?(left+1):(right+1);
}
}
相关文章推荐
- 深度理解链式前向星
- 方块的旋转
- 本月有几天
- 新手第一篇
- python3的编码问题
- Rxjava、retrofit初探
- CNN的新进展(2)
- 光的双缝干涉强度和干涉条纹
- Java NIO Channel to Channel Transfers
- 【opencv】CvMat矩阵结构
- IP地址分类详解
- HDU 1800 字符Hash
- uva10534
- King's Cake
- *(p+i) ,C语言数组指针_C语言中文网
- 【灵性的觉醒】做自己人生剧的导演
- python + fabric 实现批量部署
- Matlab中image、imagesc和imshow函数用法解析
- web开发中相对路径
- HDU-3905 Sleeping