二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最大深度 3 。
作者:力扣 (LeetCode)
链接:https://leetcode.cn/leetbook/read/top-interview-questions-easy/xnd69e/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
package leetCode;
import java.util.LinkedList;
import java.util.Queue;
public class shuceng {
public static void main(String[] args) {
//模拟数据
TreeNode left = new TreeNode(9);
TreeNode rl = new TreeNode(15);
TreeNode rr = new TreeNode(7);
TreeNode right = new TreeNode(20,rl,rr);
TreeNode root = new TreeNode(3,left,right);
int chenshu = maxDepth(root);
System.out.println(chenshu);
}
public static int maxDepth(TreeNode root) {
if (root == null)return 0;
//利用队列的特性:先进先出
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.offer(root);
//有多少层
int level = 0;
while(!queue.isEmpty()){
int size = queue.size();
level++;
while(size-- > 0){
//取出队列的最前面节点
TreeNode cur = queue.poll();
if(cur.left!=null){
queue.offer(cur.left);
}
if(cur.right!=null){
queue.offer(cur.right);
}
}
}
return level;
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode() {}
TreeNode(int val) { this.val = val; }
TreeNode(int val, TreeNode left, TreeNode right) {
this.val = val;
this.left = left;
this.right = right;
}
}