右ノードポインタ116をノートタイトル下LeetCodeブラシは、各ノードを埋めます

右ノードポインタ116を次の充填各ノード

質問

null以外のバイナリツリーを考えると、最大のパスを返します。

この問題では、任意のノードの配列に、ツリーの任意のノードからの経路として定義されます。パスは、少なくとも一つのノードを含んでおり、必ずしもルートノードを通ります。

示例 1:

输入: [1,2,3]

       1
      / \
     2   3

输出: 6
示例 2:

输入: [-10,9,20,null,null,15,7]

   -10
   / \
  9  20
    /  \
   15   7

输出: 42

問題の解決策

解決

https://github.com/soulmachine/leetcode

class Solution {
public:
    int maxPathSum(TreeNode* root) {
        max_sum=INT_MIN;
        dfs(root);
        return max_sum;
    }
private:
    int max_sum;
    int dfs(const TreeNode *root){
        if(!root) return 0;
        int l=dfs(root->left);
        int r=dfs(root->right);
        int sum=root->val;
        if(l>0) sum+=l;
        if(r>0) sum+=r;
        max_sum=max(max_sum,sum);
        return max(r,l)>0?max(r,l)+root->val:root->val;
    }
};
公開された17元の記事 ウォンの賞賛0 ビュー2175

おすすめ

転載: blog.csdn.net/g534441921/article/details/104286079