二叉树的最大路径和 II--要求开始于根节点--则 先加上根节点,再递归左右子树。

来源:互联网 发布:数据库范式举例 编辑:程序博客网 时间:2024/05/29 04:28

给一棵二叉树,找出从根节点出发的路径中,和最大的一条。

这条路径可以在任何二叉树中的节点结束,但是必须包含至少一个点(也就是根了)。

样例

给出如下的二叉树:

  1 / \2   3

返回4。(最大的路径为1→3)

     int maxSum=INT_MIN;     void process(TreeNode *root,int sum){         if(root == NULL) return;         sum += root->val;//往下经过  要加上该点的val                  maxSum=max(maxSum,sum);         process(root->left,sum);         process(root->right,sum);         sum -= root->val;//往上回父节点 要减去该点的val     }         int maxPathSum2(TreeNode *root) {        if(root == NULL) return 0;        maxSum=root->val;        int sum=0;        process(root,sum);        return maxSum;    }


0 0
原创粉丝点击