1、二叉树的深度
从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
2、java实现--递归
想要求二叉树的深度,那么就要求其左子树的深度 以及 右子树的深度,使用递归 调用本身即可
public int TreeDepth(TreeNode root) {
if(root == null)//
return 0;
int left = TreeDepth(root.left);//求左子树的深度
int right = TreeDepth(root.right);//求右子树的深度
return left > right ? left +1 : right + 1;
//return TreeDepth(root.left)>TreeDepth(root.right) ? TreeDepth(root.left)+1:TreeDepth(root.right)+1;//这句代码 可代替上面三句
}
3、java实现-非递归版
使用层序遍历思想可得到二叉树的深度(记录遍历的层数)
public int TreeDepth(TreeNode root) {
if(root == null)
return 0;
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
list.add(root);
int len = 1;//记录当前层的个数
int depth = 0;
while(len != 0) {
depth++;//每循环一次 深度+1
int index = 0;//记录下一层的节点个数
for(int i = 0; i < len; i ++) {
TreeNode node = list.poll();//出队
if(node.left != null) {
index++;
list.add(node.left);//入队
}
if(node.right != null) {
index++;
list.add(node.right);//入队
}
}
len = index;
}
return depth;
}