LeetCode 二叉樹中的最大路徑和

2021-09-11 05:20:58 字數 1403 閱讀 8095

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

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

示例 1:

輸入: [1,2,3]

1/ \

2 3

輸出: 6

示例 2:

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

-10/ \

9 20

/ \

15 7

輸出: 42

思路分析:

最長路徑有兩種情況:

①以某個節點為起始,並且尾端節點在它的子樹中

②以某個節點為起始,並且尾端節點不在他的子樹中

所以我們只要對著兩種路徑進行搜尋即可。

/**

* definition for a binary tree node.

* struct treenode

* };

*/class solution

//返回以root為起始節點的最大路徑(尾端節點在子樹裡面的情況)

int mymaxpathsum(treenode* root)

int leftmax = int_min / 4;

int rightmax = int_min / 4;

if (root->left != null)

if (root->right != null)

int maxvalue = max(leftmax, rightmax);//左、右子樹為起點路徑的最大值

result = max(result, maxvalue);//更新result(maxvalue代表路徑:以左子樹為起始路徑、右子樹為起始路徑)(尾端節點在子樹裡面的情況)

result = max(result, leftmax + root->val + rightmax);//更新result,(leftmax + root->val + rightmax代表,左子樹最長+根節點+右子樹最長的組合路徑)(尾端節點不在子樹裡面的情況)

//返回以root為起始節點的路徑最大值(尾端節點在子樹裡面的情況)

LeetCode 二叉樹最大深度

給定乙個二叉樹,找出其最大深度。二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。說明 葉子節點是指沒有子節點的節點。示例 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回它的最大深度 3 解題關鍵 明白二叉樹基本操作。definition for a bin...

二叉樹最大深度 leetcode

這個題目開始要想是用遞迴,但是遞迴的形式,沒有想對。直接判斷left right 比較麻煩,不如在遞迴呼叫的時候判斷root是否為空。public class solution int led maxdepth root.left int rid maxdepth root.right return...

Leetcode二叉樹最大深度

二叉樹的最大深度,即為二叉樹的層數,開始的想法是遍歷左子樹和遍歷右子樹,返回記錄的最大值。這樣明顯是有漏洞的,如果最右的右子樹有左孩子或者左子樹有右孩子,結果就是不正確的。使用遞迴的方法,整樹的最大深度為左孩子樹的最大深度或者右孩子樹的最大深度。遞迴結束的條件是,當乙個結點的左右子樹都為空時,返回1...