給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例 1:
輸入: [1,2,3]
1/ \
2 3
輸出: 6
示例 2:
輸入: [-10,9,20,null,null,15,7]
-10/ \
9 20
/ \
15 7
輸出: 42
本題與 687、最長同值路徑可歸為一類,像這種求整個樹中路徑最值的問題(跨結點而不是從上到下的)應該利用遞迴,返回的是 left 和 right 中較大的那個(因為求路徑對於每個結點只能選擇走坐孩子或者右孩子)加上當前結點的值,每個結點的計算最後都要更新 res 的最大值(左右孩子正數之和 + 當前結點 val)。
注意:res 初始化為 int_min,因為 res 會出現負數;寫遞迴引數的時候不要忘了寫 & 。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
int recursion(treenode* root, int &res)
};
Leetcode 124 二叉樹中的最大路徑和
題目 給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3輸出 6 示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42 ...
leetcode124 二叉樹中的最大路徑和
參考 思路參考 參考 class solution return the max value ended at root node inthelp treenode root 分析1給定乙個非空節點,最終路徑經過這個節點有4種情況 1.只有該節點本身 左右子樹的路徑都是負數 2.該節點 左子樹路徑 ...
leetcode124 二叉樹中的最大路徑和
遞迴思路 記錄左子樹和右子樹中路徑更大的那個,並向父節點提供當前節點和子樹組成的最大值 def helper self,root 遞迴終止條件 if not root return 0 每一步要做什麼 記錄最大值,當前節點最大值 root.val left right left max 0,self...