描述
求给定二叉树的最大深度,
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
(注:叶子节点是指没有子节点的节点。)
数据范围:0 \le n \le 1000000≤n≤100000,树上每个节点的val满足 |val| \le 100∣val∣≤100
要求: 空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
思路
求最大深度实际上就是求遍历层数的多少
当队列不为空时判断队列的长度,这是因为只有将一层中的所有元素全部遍历完这才算一层
然后每遍历一次记录遍历次数便可求得二叉树得到最大深度
public static int dfs(TreeNode root)
{
int num = 0;
if(root == null){
return num;
}
// 将树放入队列
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int size = queue.size();
for(int i=0; i<size; i++){
TreeNode treeNode = queue.poll();
if(treeNode.left != null) queue.offer(treeNode.left);
if(treeNode.right != null) queue.offer(treeNode.right);
}
num++;
}
return num;
}
public static int maxDepth (TreeNode root) {
// write code here
if(root==null)
return 0;
return dfs(root);
}