問題描述 :
給定乙個非空二叉樹,返回其最大路徑和。
本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。
示例 1:
輸入: [1,2,3]
1
/ \2 3
輸出: 6
示例 2:
輸入: [-10,9,20,null,null,15,7]
-109 20
/ \15 7
輸出: 42
可使用以下main函式:
#include
#include
#include
#include
#include
using
namespace std;
struct treenode
treenode
(int x)
:val
(x),
left
(null),
right
(null
)treenode
(int x, treenode *left, treenode *right)
:val
(x),
left
(left)
,right
(right)};
treenode*
inputtree()
if(count==n)
break
; cin>>item;
count++;if
(strcmp
(item,
"null")!=
0)}return root;
}int
main()
輸入說明 :
首先輸入結點的數目n(注意,這裡的結點包括題中的null空結點)
然後輸入n個結點的資料,需要填充為空的結點,輸入null。
輸出說明 :
輸出乙個整數,表示結果。
輸入範例 :
7-10 9 20 null null 15 7
輸出範例 :
42
int
dfs(treenode* node,
int&val)
int leftmax=
max(0,
dfs(node-
>left,val));
//左子樹中的最大值 如果為負數 直接捨棄
int rightmax=
max(0,
dfs(node-
>right,val));
int lmr=node-
>val+leftmax+rightmax;
//left->root->right路徑
int ret=node-
>val+
max(leftmax,rightmax)
;//經過root的最大單邊和
val=
max(val,
max(lmr,ret));
//取上述二者最大值
return ret;
//返回給上層路徑的最大單邊和
}int
maxpathsum
(treenode* node)
int val=int_min;
dfs(node,val)
;return val;
}
二叉樹最大路徑和 python 二叉樹最大路徑和
1.題目描述 輸入乙個二叉樹層次遍歷的結果,輸出這個二叉樹最大路徑和。路徑不一定從根節點開始和葉子節點結束。只要是連續的路徑就可以。如輸入 10,9,20,null,null,15,7 109 20 15 7 輸出 42 2.首先將乙個陣列還原成乙個二叉樹。然後根絕二叉樹的根節點返回最大路徑和。cl...
二叉樹最大路徑和
每個節點不可以重複經過求,求二叉樹的最大路徑和。二叉樹如圖 本文採用深度優先演算法解題。假設每個節點都有兩個屬性,s stop c continue s屬性為,該節點及其以下節點的不停止走法最大值。c屬性為在還有路可走的情況下的最大值。舉例說明 node4節點,有兩條路可走 路線一和路線二 路線一意...
二叉樹中的最大路徑和
給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 1,2,3 1 2 3 輸出 6 示例 2 輸入 10,9,20,null,null,15,7 10 9 20 15 7 輸出 42最大路...