class TreeNode{
int val;
TreeNode left;
TreeNode right;
TreeNode(int val){
this.val = val;
left = null;
right = null;
}
TreeNode(int val,TreeNode left,TreeNode right){
this.val = val;
this.left = left;
this.right = right;
}
}
import java.util.LinkedList;
public class DeepOfTree {
// 递归
public static int deep(TreeNode root){
if(root == null)
return 0;
return 1+Math.max(deep(root.left),deep(root.right));
}
// 非递归,利用树的层次遍历
public static int deep2(TreeNode root) {
if(root == null)
return 0;
TreeNode curNode = null;//当前节点
int level = 0;//记录当前层
int last=0; //用来记录当前层
int cur = 0;//当前层访问的节点数
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
while(!queue.isEmpty()) {
level++;
last = queue.size();
cur = 0;
while(cur < last){
cur++;
curNode = queue.poll();
if(curNode.left != null){
queue.offer(curNode.left);
}
if(curNode.right != null) {
queue.offer(curNode.right);
}
}
}
return level;
}
public static void main(String[] args) {
TreeNode val_2 = new TreeNode(2);
TreeNode val_4 = new TreeNode(4);
TreeNode val_3 = new TreeNode(3,val_2,val_4);
TreeNode val_6 = new TreeNode(6);
TreeNode root = new TreeNode(5,val_3,val_6);
System.out.println(deep2(root));
}
}
求树的深度(Java)
最新推荐文章于 2024-07-01 20:04:46 发布