二叉树的最大深度
描述
求给定二叉树的最大深度,最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。
解题
二叉树
public class TreeNode {
int val=0;
TreeNode left=null;
TreeNode right=null;
}
Solution
/**
* 求树高
* 1.深度优先遍历 2.广度优先遍历
*/
import java.util.Deque;
import java.util.LinkedList;
public class Solution {
public int maxDepth(TreeNode root){
if (root==null) return 0;
//if (root.left==null&&root.right==null) return 1;
return Math.max(maxDepth(root.left)+1,maxDepth(root.right)+1);//深度遍历,递归子树
}
public int maxDepth2(TreeNode root){
if (root==null) return 0;
Deque<TreeNode> deque=new LinkedList<>();//队列
deque.push(root);
int count = 0;
while (!deque.isEmpty()){
int size=deque.size();//当前层
while (size-- >0){
TreeNode cur = deque.pop();//当前层遍历
if (cur.left!=null) deque.addLast(cur.left);
if (cur.right!=null) deque.addLast(cur.right);
}
count++;
}
return count;
}
}