每日力扣算法题(简单篇)

543.二叉树的直径

原题:

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

解题思路:

树类题目通常采用递归的解法,这里我们可以将题目理解为,求和左右节点最大的高度和,首先将假设只有四个节点:

我们先将问题分解为一个个子问题,先递下去,先向左遍历,从1到2再到4,发现4左右节点均为空,其左右节点返回0,归上去,节点4返回1高度,归到2节点处,由于左侧已经归了上来,则开始遍历右侧,发现右侧为空,返回0,求取左右的最大高度,结果为1,再加上该节点本身的高度,向上归,返回2,回到节点1,节点1再重复节点2的操作,返回最终结果4

顺着该思路我们便有如下代码

源代码:

int highsum(struct TreeNode* root,int maxlen,int *maxans)
{
    if(!root)
    {
        return 0;
    }
    int left_hight=highsum(root->left,maxlen,maxans)+1;
    int right_hight=highsum(root->right,maxlen,maxans)+1;
    maxlen=fmax(left_hight,right_hight);
    *maxans=fmax(*maxans,right_hight+left_hight-2);
    return maxlen;
}
int diameterOfBinaryTree(struct TreeNode* root) {
    int ans=0;
    highsum(root,0,&ans);
    return ans;
}

相关推荐

  1. 每日算法简单

    2024-01-04 12:54:02       60 阅读
  2. 算法练习----每日------1

    2024-01-04 12:54:02       48 阅读
  3. 算法练习----每日------2

    2024-01-04 12:54:02       29 阅读
  4. 算法练习----每日------3

    2024-01-04 12:54:02       40 阅读
  5. 算法练习----每日------5

    2024-01-04 12:54:02       37 阅读
  6. 算法练习----每日------6

    2024-01-04 12:54:02       36 阅读
  7. 算法练习----每日------4

    2024-01-04 12:54:02       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-04 12:54:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-04 12:54:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-04 12:54:02       82 阅读
  4. Python语言-面向对象

    2024-01-04 12:54:02       91 阅读

热门阅读

  1. 基于gui控制的遗传算法优化BP神经网络回归系统

    2024-01-04 12:54:02       61 阅读
  2. 【web安全】登录界面渗透的思路总结

    2024-01-04 12:54:02       67 阅读
  3. 机器学习在缺陷检测中的突破与实践

    2024-01-04 12:54:02       69 阅读
  4. ARM 内核架构分类?

    2024-01-04 12:54:02       56 阅读
  5. 1305:Maximum sum

    2024-01-04 12:54:02       48 阅读
  6. Git | tag相关命令

    2024-01-04 12:54:02       59 阅读
  7. MySQL创建用户并赋予数据库权限

    2024-01-04 12:54:02       54 阅读
  8. NLP基础——中文分词

    2024-01-04 12:54:02       62 阅读