https://leetcode.cn/problems/maximum-depth-of-binary-tree/
题面
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:

1 2
| 输入:root = [3,9,20,null,null,15,7] 输出:3
|
示例 2:
1 2
| 输入:root = [1,null,2] 输出:2
|
提示:
- 树中节点的数量在
[0, 104]
区间内。
-100 <= Node.val <= 100
代码
递归写法
1 2 3 4 5 6 7 8 9 10
| int getdepth(TreeNode* node) { if (node == NULL) return 0; int leftdepth = getdepth(node->left); int rightdepth = getdepth(node->right); int depth = 1 + max(leftdepth, rightdepth); return depth; } int maxdepth(TreeNode* root) { return getdepth(root); }
|
迭代写法
使用层序遍历最合适,因为最大深度就是二叉树的层数,和层序遍历的方式极其吻合。这种写法更简单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int maxDepth(TreeNode* root) { if (root == NULL) return 0; queue<TreeNode*> que; que.push(root); int depth = 0; while (!que.empty()) { depth++; int size = que.size(); for (int i = 0; i < size; i++) { TreeNode* node = que.front(); que.pop(); if (node->left) que.push(node->left); if (node->right) que.push(node->right); } } return depth; }
|