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--------上一层来到当前节点,也需要走一步。

相关推荐
music&movie19 分钟前
算法工程师认知水平要求总结
人工智能·算法
laocui11 小时前
Σ∆ 数字滤波
人工智能·算法
yzx9910131 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
全栈凯哥2 小时前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
全栈凯哥2 小时前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表
SuperCandyXu2 小时前
leetcode2368. 受限条件下可到达节点的数目-medium
数据结构·c++·算法·leetcode
Humbunklung2 小时前
机器学习算法分类
算法·机器学习·分类
Ai多利2 小时前
深度学习登上Nature子刊!特征选择创新思路
人工智能·算法·计算机视觉·多模态·特征选择
蒟蒻小袁3 小时前
力扣面试150题--被围绕的区域
leetcode·面试·深度优先
Q8137574604 小时前
中阳视角下的资产配置趋势分析与算法支持
算法