package com.tree.java;
import java.util.LinkedList;
import java.util.Queue;
public class seven {
//递归法:
public int maxdepth(TreeNode root) {
if(root == null) {
return 0;
}
int leftdepth = maxdepth(root.left);
int rightdepth = maxdepth(root.right);
return Math.max(leftdepth, rightdepth) + 1;
}
//迭代法:
public int maxdepth1(TreeNode root) {
if(root == null) {
return 0;
}
LinkedList<TreeNode> deque = new LinkedList<>();//临时存储每一行的结点
deque.offer(root);//将root放入deque中 开启第一轮的while循环
int depth = 0;
while(!deque.isEmpty()) {
int size = deque.size();
depth++;
for(int i = 0; i < size; i++) {
TreeNode poll = deque.poll();
//提前加入deque 为下一轮的while循环做准备
if(poll.left != null) {
deque.offer(poll.left);
}
if(poll.right != null) {
deque.offer(poll.right);
}
}
}
return depth;
}
}
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;
}
}
6.6 二叉树的最大深度——【LeetCode】
最新推荐文章于 2024-07-25 11:15:54 发布