您的位置:首页 > 其它

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

2018-03-06 21:16 330 查看
package com.niuke;

import java.util.LinkedList;
import java.util.Queue;

/**
* Created by admin on 2018/3/6.
*/
public class DeepTree {
//求二叉树的深度
//1 递归   没啥说的
public int TreeDepth2(TreeNode root) {
//return root==null?0:Math.max(TreeDepth(root.left),TreeDepth(root.right));
if(root==null) {
return 0;
}
int left=TreeDepth(root.left);
int right=TreeDepth(root.right);
return Math.max(left,right)+1;
}

//2 非递归:按层次遍历  用队列
public int TreeDepth(TreeNode root) {
if(root==null) {
return 0;
}
Queue<TreeNode> queue=new LinkedList<TreeNode>();
queue.add(root);
int depth=0;//深度
int count=0;//该层的最左节点
int lastcount=1;//该层的最右节点
while(queue.size()!=0) {
TreeNode head=queue.poll();//将队列中的节点弹出,并将其左右节点放入
count++;
if(head.left!=null) {
queue.add(head.left);
}
4000

if(head.right!=null) {
queue.add(head.right);
}
if(count==lastcount) {//弹出该层的最后一个节点
lastcount=queue.size();//当前队列的长度就是下一层的最后节点
depth++;
count=0;//重置最左节点
}
}
return depth;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐