LCR 175. 计算二叉树的深度

LCR 175. 计算二叉树的深度

LCR 175

dfs解法

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
// 思路 :
// 一个树的最大深度=1+max(左子树的最大深度,右子树的最大深度)   
// 这个1是它root这一层
int dfs(TreeNode*root){
    if(root==nullptr)return 0;//如果递归到了叶子节点的子树了,返回0
    return max(dfs(root->left),dfs(root->right) )+1;
}
public:
    int calculateDepth(TreeNode* root) {
        if(root==nullptr)return 0;///如果是空树,返回0
        return max(dfs(root->left),dfs(root->right) )+1;
    }
};

优化一下

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int calculateDepth(TreeNode* root) {
        if(root==nullptr)return 0;
        return max(calculateDepth(root->left),calculateDepth(root->right) )+1;
    }
};

bfs解法

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int calculateDepth(TreeNode* root) {
        if(root==nullptr)return 0;//如果是空树,返回0
        int level=0;//当前层
        vector<TreeNode*>que;//队列
        que.push_back(root);
        while(!que.empty() ){//当前曾不是空层
            vector<TreeNode*>tmp;//存储当前层的下一层节点
            level++;
            for(TreeNode*it:que){//遍历当前层的下一层节点
                if(it->left!=nullptr)tmp.push_back(it->left);
                if(it->right!=nullptr)tmp.push_back(it->right);
            }
            que=tmp;//队列来到新的一层    
        }
        return level;//返回层数
    }
};
相关推荐
leoufung5 小时前
LeetCode 135. Candy:从直觉到最优解的完整推导
算法·leetcode·职场和发展
WHS-_-20225 小时前
Tensor-Based Target Sensing for Resource-Irregular ISAC Systems
linux·人工智能·算法
成都易yisdong5 小时前
高程异常计算器:一款集成Geoid、重力场与地磁场的专业工具
算法
王老师青少年编程5 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【反悔贪心】:种树
c++·算法·贪心·反悔贪心·csp·信奥赛·种树
南宫萧幕5 小时前
基于 PSO 的 HEV 能量管理策略:从联合仿真建模到排错实战
开发语言·python·算法·matlab·控制
生物信息与育种6 小时前
全基因组重测序及群体遗传与进化分析技术服务指南
人工智能·深度学习·算法·数据分析·r语言
AI人工智能+电脑小能手6 小时前
【大白话说Java面试题】【Java基础篇】第23题:ConcurrentHashMap的底层原理是什么
java·开发语言·算法·哈希算法·散列表·hash
葳_人生_蕤6 小时前
hot100——回溯和DFS、BFS
算法·深度优先
Eloudy6 小时前
Steane码的稳定子的生成元集计算过程
算法
MegaDataFlowers6 小时前
快速算法验证流水线
算法