冲刺阶段:二叉树的最长路径

这个题目,大佬说和树的直径一样。
但是这种方法做起来更简单一些,这里我写的是包含节点数值的。

代码如下,不完整,是核心代码:

struct Node{
int value ;
Node *left ;
Node *right;
}*Root;


int max_sum ;

int maxSinglePathSum(Node *root)
{
    if(root==NULL)
        return 0 ; 
    int left = maxSinglePathSum(root->left);
    int right = maxSinglePathSum(root->right);
    int val = root->value;
    if(left>0)  value +=left;
    if(right>0) value +=right;
        max_sum =max(max_sum,val);'
    return max(root->value,max(root->value+left,root->value+right));
}

int getPathMax(Node *root){
    if(root==NULL)
        return 0 ;
    max_sum = 0 ; //   root->value
    maxSinglePathSum(root);
    return max_sum;
}

猜你喜欢

转载自blog.csdn.net/qq_36616268/article/details/80840924