Lintcode94 Binary Tree Maximum Path Sum solution 題解

【題目描述】

給出一棵二叉樹,尋找一條路徑使其路徑和最大,路徑可以在任一節(jié)點中開始和結束(路徑和為兩個節(jié)點之間所在路徑上的節(jié)點權值之和)。

Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

【題目鏈接】

www.lintcode.com/en/problem/binary-tree-maximum-path-sum/

【題目解析】

首先分析一下對于指定某個節(jié)點為根時,最大的路徑和有可能是哪些情況。第一種是左子樹的路徑加上當前節(jié)點,第二種是右子樹的路徑加上當前節(jié)點,第三種是左右子樹的路徑加上當前節(jié)點(相當于一條橫跨當前節(jié)點的路徑),第四種是只有自己的路徑。

乍一看似乎以此為條件進行自下而上遞歸就行了,然而這四種情況只是用來計算以當前節(jié)點根的最大路徑,如果當前節(jié)點上面還有節(jié)點,那它的父節(jié)點是不能累加第三種情況的。所以要計算兩個最大值,一個是當前節(jié)點下最大路徑和,另一個是如果要連接父節(jié)點時最大的路徑和。用前者更新全局最大量,用后者返回遞歸值就行了。

【參考答案】

www.jiuzhang.com/solutions/binary-tree-maximum-path-sum/

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容