python版——>leetcode 104:二叉树的最大深度(python)
题目
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回它的最大深度 3
来源:104. 二叉树的最大深度 - 力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
层次遍历法
- 进行一个层次遍历,最后遍历的节点必为深度最大的点
代码如下:
class Solution {
public:
int maxDepth(TreeNode* root) {
if(!root) return 0;
vector<TreeNode*> nodes{root};
int dep = 1;
vector<int> depth{dep};
while(!nodes.empty()){
auto node = nodes[0];
nodes.erase(nodes.begin());
dep = depth[0];
depth.erase(depth.begin());
if(node->left){
nodes.push_back(node->left);
depth.push_back(dep + 1);
}
if(node->right){
nodes.push_back(node->right);
depth.push_back(dep + 1);
}
}
return dep;
}
};
结果:
递归法
- 递归分别求左右子树的最大深度,并加到原有层数上,最后返回两者中的最大值
代码如下:
class Solution {
public:
int maxDepth(TreeNode* root) {
if(!root) return 0;
int llen = 1;
int rlen = 1;
if(root->left)
llen += maxDepth(root->left);
if(root->right)
rlen += maxDepth(root->right);
return max(llen,rlen);
}
};
结果: