题目:leetcode104. 二叉树的最大深度
描述
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
思路
首先代码最少的肯定是递归,先求出左子树的深度,再求出右子树的深度,然后返回这两个数的最大值,如果当前节点是null,则返回0。
其次就是层次遍历,层次遍历要求设置一个队列,不断循环。
递归
public class Solution {
public int maxDepth(TreeNode root) {
if(root==null)
return 0;
int d1=0,d2=0;
d1+=maxDepth(root.left);
d2+=maxDepth(root.right);
return d1>d2?(d1+1):(d2+1);
}
}
层次遍历
import java.util.Deque;
import java.util.LinkedList;
public class Solution {
public int maxDepth(TreeNode root) {
if(root==null)
return 0;
int depth=0;
int length;
Deque<TreeNode> deque=new LinkedList();
deque.offer(root);
while(!deque.isEmpty())
{
length=deque.size();
depth++;
TreeNode node;
while(length>0)
{
node=deque.poll();
if(node.left!=null)
deque.offer(node.left);
if(node.right!=null)
deque.offer(node.right);
length--;
}
}
return depth;
}
}