LeetCode第124題 二叉樹中的最大路徑和

2021-08-28 13:49:48 字數 950 閱讀 8628

給定乙個非空二叉樹,返回其最大路徑和。

本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。

示例 1:

輸入: [1,2,3]

1

/ \2 3

輸出: 6

示例 2:

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

-10/

9 20

/ 15 7

輸出: 42

對於任何乙個root而言有以下情況:

1.最大路徑中包括該root:那麼我們需要知道(1) left::從root的左子樹第乙個結點開始向下延伸可以達到的最大路徑(ps:包括左子樹第乙個結點,但是不一定要延伸到葉子結點)(2)right::root右子樹…(同(1)省略!!) 那麼包括該結點的最大路徑為left+root->val ,left+root->val+right,root->val+right,root->val 四個中的最大乙個

2.最大路徑中不包括該root點:題中說明了至少是要包括乙個結點的,如果是不包括該root點,那麼這個最大路徑就一定是在左子樹,或者右子樹內部,這個最大值在我們遞迴呼叫到左子樹(或者右子樹)的時候 已經被算過了,並且被存在了 total_max內;

ps:digui(treenode* root, int &total_max)函式返回的是從root開始(包括root)向下延伸可達的最大路徑(這個指的是單方向的!!!只是向左子樹或者向右子樹方向),total_max存的是,至少!!!!包含該結點可達到的最大路徑(這個路徑是可以多方向的,可以左右都延伸!!!)

int digui(treenode* root, int &total_max)

else return 0;

} int maxpathsum(treenode* root)

LeetCode 第124題 二叉樹的最大路徑和

本題可以對比左神演算法中的 二叉樹中的最遠距離,只不過最遠距離中沒有考慮權重的問題,本題需要考慮每個節點的權重問題,還是有所區別的。題目 給定乙個非空二叉樹,返回其最大路徑和。本題中,路徑被定義為一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含乙個節點,且不一定經過根節點。示例 1 輸入 ...

LeetCode第98題(驗證二叉搜尋樹)

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3 輸出 true 示例 2 輸入 5 1 4 3 6 輸出 false 解釋 ...

LeetCode第110題 平衡二叉樹

給定乙個二叉樹,判斷它是否是高度平衡的二叉樹。本題中,一棵高度平衡二叉樹定義為 乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過1。示例 1 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回 true 示例 2 給定二叉樹 1,2,2,3,3,null,n...