二叉树的深度
题目
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)
形成树的一条路径,最长路径的长度为树的深度。
思路
DFS
层次遍历
代码
import java.util.LinkedList;
import java.util.Queue;
public class TreeDepth {
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public int TreeDepth(TreeNode root){
if (root==null){
return 0;
}
if (root.left==null&&root.right==null){
return 1;
}
int left = TreeDepth(root.left);
int right = TreeDepth(root.right);
return left>right?left+1:right+1;
}
public int TreeDepth_II(TreeNode root){
int depth = 0;
if (root==null){
return 0;
}
Queue<TreeNode> quene = new LinkedList<>();
quene.add(root);
int count = 0,nextCount = 1;
while (quene.size()!=0){
TreeNode top = quene.poll();
count++;
if (top.left!=null){
quene.add(top.left);
}
if (top.right!=null){
quene.add(top.right);
}
if (count==nextCount){
nextCount = quene.size();
count = 0;
depth++;
}
}
return depth;
}
}