Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
求解二叉树的深度,该题比较简单~~~
两种解法,递归和非递归
非递归使用层序遍历,思想:curnum记录当前层节点个数, nextnum记录下一层节点个数 ,遍历完一层depth++,层序遍历肯定是遍历到最底层
public class MaximumDepthofBT {
public int maxDepth2(TreeNode root) {
if(root==null) return 0;
int leftdepth = maxDepth(root.left);
int rightdepth = maxDepth(root.right);
return Math.max(leftdepth, rightdepth)+1;
}
//层序遍历
//思想:curnum记录当前层节点个数, nextnum记录下一层节点个数 ,遍历完一层depth++,层序遍历肯定是遍历到最底层
public int maxDepth(TreeNode root) {
if(root==null) return 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
int curnum = 1;
int nextnum = 0;
//记录深度
int depth = 0;
while(!queue.isEmpty()) {
TreeNode node = queue.poll();
curnum--;
if(node.left!=null) {
queue.offer(node.left);
nextnum++;
}
if(node.right!=null) {
queue.offer(node.right);
nextnum++;
}
if(curnum==0) {
curnum=nextnum;
nextnum=0;
depth++;
}
}
return depth;
}
}