最長同值路徑

2021-10-01 05:47:31 字數 1111 閱讀 9500

題目力扣鏈結

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。 這條路徑可以經過也可以不經過根節點。

注意:兩個節點之間的路徑長度由它們之間的邊數表示。

例項1:

輸入:

輸出 : 2

輸入:看到二叉樹的題,首先要想到遞迴。首先,要想得到等值路徑,需要該節點的左孩子的等值路徑和該節點右孩子的等值路徑。若該節點的值和左右孩子的值相同的話,那麼把左右子樹等值路徑相加,然後比較這次的等值路徑和當前最大等值路徑的大小,若比當前最大等值路徑大,則更新。

/**

* * definition for a binary tree node. *

* struct treenode

* * }; */

*class

solution

*int left=

path

(t->left,t-

>val)

;//求左子樹最長路徑長度

*int right=

path

(t->right,t-

>val)

;//求右子樹最長等值路徑長度

* max_path=

max(max_path,left+right)

;//返回當前所要求的最長等值路徑 *if

(t->val==val)

//如果是等值的話,返回t的左子樹和右子樹路徑長度(算當前節點)的最大值 **

return0;

//不是等值的直接返回0 *}

*int

longestunivaluepath

(treenode* root)**

path

(root,root-

>val)

;* cout<

*return max_path;*}*};

執行用時 :132 ms, 在所有 cpp 提交中擊敗了99.48% 的使用者

記憶體消耗 :49.6 mb, 在所有 cpp 提交中擊敗了82.94%的使用者

最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。示例 1 輸入 5 4 5 1 1 5輸出 2示例 2 輸入 1 4 5 4 4 5輸出 2注意 給定的二叉樹不超過10000個結點。樹的高度不超過1...

687 最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。示例 1 輸入 5 4 5 1 1 5 輸出 2示例 2 輸入 1 4 5 4 4 5 輸出 2注意 給定的二叉樹不超過10000個結點。樹的高度不超...

遞迴 最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。輸入 輸出 2 輸入 輸出 2 注意 給定的二叉樹不超過10000個結點。樹的高度不超過1000。最長的路徑有三種情況 1.在左子樹內部 2.在右子樹...