题目地址(104. 二叉树的最大深度)
https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
题目描述
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回它的最大深度 3 。
前置知识
公司
- 暂无
思路
关键点
代码
- 语言支持:Java
递归法
class Solution {public int maxDepth(TreeNode root) {if (root == null) {return 0;}int left = maxDepth(root.left);int right = maxDepth(root.right);return Math.max(left, right)+1;}}
迭代法
/*** Definition for a binary tree node.* public 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;* }* }*/class Solution {public int maxDepth(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();int num = 0;if (root == null) {return num;}queue.offer(root);while (!queue.isEmpty()) {int size = queue.size();while (size>0) {TreeNode poll = queue.poll();if (poll.left != null) {queue.offer(poll.left);}if (poll.right != null) {queue.offer(poll.right);}size--;}num++;}return num;}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28n%29&id=gbpB9)
- 空间复杂度:
#card=math&code=O%28n%29&id=PKSWG)
