概述
1.递归法1
比较左右子树的深度,返回深度较大值
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root){
return max(maxDepth(root->left),maxDepth(root->right))+1;
}
return 0;
}
};
2.递归法2
借助一个变量max,每次都叶子结点都比较一下深度是否比max大
class Solution {
private:
void maxDepth(TreeNode* root,int &max,int cnt){
if(root==NULL){
if(cnt>max){
max=cnt;
}
return ;
}
maxDepth(root->left,max,cnt+1);
maxDepth(root->right,max,cnt+1);
}
public:
int maxDepth(TreeNode* root) {
int max=0;
maxDepth(root,max,0);
return max;
}
};
3.借助队列,结合层次遍历
class Solution {
public:
int maxDepth(TreeNode* root) {
int cnt=0;
queue<TreeNode*>q;
if(root)q.push(root);
while(!q.empty()){
int s=q.size();
cnt++;
while(s--){
TreeNode*node=q.front();
q.pop();
if(node->left)q.push(node->left);
if(node->right)q.push(node->right);
}
}
return cnt;
}
};
最后
以上就是健康衬衫为你收集整理的104. 二叉树的最大深度(1.递归、2.队列的全部内容,希望文章能够帮你解决104. 二叉树的最大深度(1.递归、2.队列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复