二叉树的深度
题目描述:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
解题思路:
//非递归写法:层序遍历
import java.util.Queue;
import java.util.LinkedList;
public class Solution{
public int TreeDepth(TreeNode ppRootOfTree){
if (ppRootOfTree == null) return 0;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(ppRootOfTree);
int depth = 0, count = 0, nextCount =1;
while (queue.size() != 0){
//poll:Queue(队列)的一个方法,获取并移除此队列的头,如果此队列为空,则返回null
TreeNode top = queue.poll();
count ++;
if (top.left != null)
queue.add(top.left);
if (top.right != null)
queue.add(top.right);
if (count == nextCount){
nextCount = queue.size();
count =0;
depth ++;
}
}
return depth;
}
}
//递归
import java.lang.Math;
public class Solution{
public int TreeDepth(TreeNode ppRootOfTree){
if (ppRootOfTree == null) return 0;
int left = TreeDepth(ppRootOfTree.left);
int right =TreeDepth(ppRootOfTree.right);
return Math.max(left,right) +1;
}
}