二叉树的最大路径和与最远结点距离

这篇博客探讨了如何在二叉树中找到连接任意两个节点的最大路径和,以及计算节点的最远距离。通过分析每个节点的三种可能路径,可以确定整棵树的最大路径和。此外,还提到了另一种解决节点最远距离问题的递归方法。
摘要由CSDN通过智能技术生成

首先确定一下单路径的定义:某个结点的单路径就是只经过该结点且不同时包含其左右子树上的结点的路径

一、求连接二叉树的任意两个结点的路径的最大和

分析:对于二叉树上的每一个结点,求出经过它的路径的最大和,并更新这个最大和即可。经过它的最大和路径可能有三种情况:

1、其左子结点的最大单路径和大于0,且其右子结点的最大单路径和大于0,那么经过该结点的最大和路径通过该结点跨过左右子树

2、其左子结点和右子结点有且仅有一个最大单路径和大于0,那么经过该结点的最大和路径就是它的某一个(大于0)子结点的单路径上加上该结点

3、其左右子结点的最大单路径和都不大于0,那么最大和路径就是该结点本身

//求二叉树最大路径和,所求的路径位于任意两个结点之间
class Solution1 {
private:
    int max_sum;
    //返回以root为终点的路径最大和
    int maxSinglePathSum(TreeNode* root)
    {
        if (root == NULL)
        {
            return 0;
        }
        int left = maxSinglePathSum(root->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值