Leetcode687 最長同值路徑

2022-06-01 01:57:14 字數 798 閱讀 5962

這個路徑可能存在從子節點經過父節點,再到子節點的情況,所有從當前節點構成的路徑需要考慮左右兩條路徑相加,用遞迴,求得左右的最長路徑,相加,即為所求

// study.cpp: 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include #include #include #include #include #include #include #include #include #include #define int_max 2147483647 // maximum (signed) int value

#define int_min (-2147483647 - 1) // minimum (signed) int value

;using namespace std;

int max(int a, int b)

int min(int a, int b)

struct treenode };

int rmax = 0;

int find_depth(treenode* p, int value)

void solution(treenode* p)

int longestunivaluepath(treenode* root)

void printtree(treenode* p,int depth=0)

int main()

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 然後再進行大遞迴,遞迴...