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

相关推荐
CoovallyAIHub2 分钟前
从电影特效到体育科学,运动追踪只能靠“人眼”吗?
深度学习·算法·计算机视觉
风筝在晴天搁浅2 分钟前
hot100 48.旋转图像
算法
TechNomad19 分钟前
排序算法:希尔排序算法
数据结构·算法·排序算法
热爱生活的猴子20 分钟前
算法中DFS & BFS 核心学习笔记
算法·深度优先·宽度优先
im_AMBER20 分钟前
Leetcode 83 使数组平衡的最少移除数目中等相关标签 | 尽可能使字符串相等
数据结构·c++·笔记·学习·算法·leetcode
TechNomad22 分钟前
排序算法:快速排序算法
算法·排序算法
xu_yule23 分钟前
算法基础(图论)—拓扑排序
c++·算法·动态规划·图论·拓扑排序·aov网
mu_guang_23 分钟前
算法图解1-算法简介
算法·cpu·计算机体系结构
CoovallyAIHub24 分钟前
超越CUDA围墙:国产GPU在架构、工艺与软件栈的“三维替代”挑战
深度学习·算法·计算机视觉
不穿格子的程序员24 分钟前
从零开始写算法——二叉树篇2:二叉树的最大深度 + 翻转二叉树
算法·二叉树·深度优先