Leetcode687 最長同值路徑(C語言)

2021-10-02 19:10:43 字數 963 閱讀 8069

資料結構-樹:演算法與資料結構參考

題目:

給定乙個二叉樹,找到最長的路徑1

,這個路徑中的每個節點具有相同值。 這條路徑可以經過也可以不經過根節點。例:

輸入:[5,4,5,1,1,null,5]

輸出:2

思路:

遞迴,注意從根開始的同值路徑的處理,分不同可能情況考慮。

**:

/**

* definition for a binary tree node.

* struct treenode ;

*/int result =0;

//全域性變數,函式可直接呼叫

#define max(a, b) (a > b ? a : b)

//為了方便,定義最大值函式

intdfs

(struct treenode* root)

//左右值均等於根

else

if(root->left !=

null

&& root->left->val == root->val)

//只有左值等於根

else

if(root->right !=

null

&& root->right->val == root->val)

//只有右值等於根

else

return0;

//均不與根同值

}int

longestunivaluepath

(struct treenode* root)

兩個節點之間的路徑長度由它們之間的邊數表示。 ↩︎

LeetCode 687 最長同值路徑

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

leetcode 687 最長同值路徑

給定乙個二叉樹,找到最長的路徑,這個路徑中的每個節點具有相同值。這條路徑可以經過也可以不經過根節點。注意 兩個節點之間的路徑長度由它們之間的邊數表示。此題和leetcode124思路完全相同 題解連線這個題也是這條路徑不能有迴路,也就是這條路徑最多只有乙個節點的兩個子樹都被包括在內,這句話直接理解比...

leetcode 687 最長同值路徑

思路一 看到這個題,我首先想的是,如何尋找必須通過root的同值最長路徑,這是乙個遞迴,遞迴root的左右子樹,尋找同值最長路徑,這個遞迴返回的是最長同值子樹路徑 左右之一 這樣才能保證遞迴一致,想要得到總的最長,在遞迴中新增乙個math.max ans,left right 然後再進行大遞迴,遞迴...