參考:
思路參考:
**參考:
class solution
/*** return the max-value-ended-at-root-node ***/
inthelp
(treenode* root)
};
分析1
給定乙個非空節點,最終路徑經過這個節點有4種情況:1.只有該節點本身(左右子樹的路徑都是負數);2.該節點+左子樹路徑;3.該節點+右子樹路徑;4.該節點+左子樹路徑+右子樹路徑。其中1,2,3都可以作為子樹路徑和向上延伸,而4則不行。
分析2
1.如果這個節點是空,則返回值為0;
2.遍歷節點的左子樹和右子樹,將左子樹的最大不分叉路徑(大於0)+右子樹的最大不分叉路徑(大於0)+節點本身的值
與當前最大路徑和max作比較,將較大的數儲存於max;
3.返回左右節點的中較大不分叉路徑和(大於零)+節點值,作為遞迴呼叫。
紅色表示路徑,右圖對於2節點來說,因為其返回的包含左右子樹,所以會分叉,則加上父節點1後不會形成路徑。而左圖中節點2只包含左子樹,因此加上父節點1後還是可以構成一條路徑
LeetCode 124 二叉樹中的最大路徑和
給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3 輸出 6示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42本題與 ...
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 二叉樹中的最大路徑和
遞迴思路 記錄左子樹和右子樹中路徑更大的那個,並向父節點提供當前節點和子樹組成的最大值 def helper self,root 遞迴終止條件 if not root return 0 每一步要做什麼 記錄最大值,當前節點最大值 root.val left right left max 0,self...