文章目录
- 1. 题目信息
- 2. 解题
- 2.1 递归法
- 2.2 按层遍历
1. 题目信息
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7
返回它的最大深度 3 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
《剑指Offer》同题:面试题55 - I. 二叉树的深度
可以参考的博客二叉树。
2.1 递归法
class Solution {
public:int maxDepth(TreeNode* root) {int maxcount = 0;if(root){calcTreeDepth(root, 0, maxcount);}return maxcount;}void calcTreeDepth(TreeNode* root, int height, int &maxcount){if(root){height++;if(height > maxcount)maxcount = height;if(root->left)calcTreeDepth(root->left, height, maxcount);if(root->right)calcTreeDepth(root->right, height, maxcount);}}
};
class Solution {
public:int maxDepth(TreeNode* root) {if(!root)return 0;return 1+max(maxDepth(root->left), maxDepth(root->right));}
};
2.2 按层遍历
class Solution {
public:int maxDepth(TreeNode* root) {if(root == NULL)return 0;queue<TreeNode*> q;q.push(root);int maxcount = 0, i, n;while(!q.empty()){++maxcount;n = q.size();for(i = 0; i < n; ++i){if(q.front()->left)q.push(q.front()->left);if(q.front()->right)q.push(q.front()->right);q.pop();}}return maxcount;}
};