Leetcode543. 二叉树的直径(HOT100)

链接

代码:

cpp 复制代码
class Solution {
public:
    int res = 0;
    int diameterOfBinaryTree(TreeNode* root) {
        dfs(root);
        return res;
    }
    int dfs(TreeNode* root){
        if(!root)return 0;
        int left = dfs(root->left),right = dfs(root->right);
        res = max(res,left+right);
        return max(left,right)+1;
    }
};

题解:

要求最大直径,其实有点类似于深度,以root节点为例,直径最大就是左子树的3+右子树的4,答案就是7。

对于二叉树来说,我们使用dfs遍历所有点,自下而上,把子节点的值返回给父节点,最终算出整个树的最大直径。

还有一个注意的点:给上一层返回的时候应该返回多少?当然是你往左走(left的值)和往右走(right)的值的最大值,然后再加上1--------上一层来到当前节点,也需要走一步。

相关推荐
艾斯比的日常17 分钟前
Java 三色标记算法:并发垃圾回收的核心技术解析
java·开发语言·算法
CoovallyAIHub27 分钟前
抛弃LLM!MIT用纯视觉方法破解ARC难题,性能接近人类水平
深度学习·算法·计算机视觉
程序猿编码31 分钟前
PRINCE算法的密码生成器:原理与设计思路(C/C++代码实现)
c语言·网络·c++·算法·安全·prince
高洁0143 分钟前
具身智能-视觉语言导航(VLN)
深度学习·算法·aigc·transformer·知识图谱
Croa-vo1 小时前
TikTok 数据工程师三轮 VO 超详细面经:技术深挖 + 建模推导 + 压力测试全记录
javascript·数据结构·经验分享·算法·面试
蘑菇小白1 小时前
时间复杂度
数据结构·算法
czlczl200209251 小时前
算法:组合问题
算法·leetcode·职场和发展
CoderYanger1 小时前
优选算法-字符串:63.二进制求和
java·开发语言·算法·leetcode·职场和发展·1024程序员节
Cx330❀2 小时前
C++ STL set 完全指南:从基础用法到实战技巧
开发语言·数据结构·c++·算法·leetcode·面试
阿昭L3 小时前
堆结构与堆排序
数据结构·算法