二叉樹最長連續序列 LintCode

2021-08-20 22:22:25 字數 846 閱讀 5758

描述

給一棵二叉樹,找到最長連續路徑的長度。

這條路徑是指 任何的節點序列中的起始節點到樹中的任一節點都必須遵循 父-子 聯絡。最長的連續路徑必須是從父親節點到孩子節點(不能逆序)。

樣例 舉個例子:

1\3

/ \2 4

\5

最長的連續路徑為 3-4-5,所以返回 3。

2\3

/ 2

/ 1

最長的連續路徑為 2-3 ,而不是 3-2-1 ,所以返回 2。

思路

#ifndef c595_h

#define c595_h

#include

#include

using

namespace

std;

class treenode

};class solution

return max;

}//從根節點開始處理,存放根節點及其連續序列長度,分別處理左右結點

//如果結點子樹的值為結點的值+1,則其連續序列長度為結點連續序列長度+1

void helper(treenode *root)

else

m[root->left] = 1;

helper(root->left);

}if (root->right)

else

m[root->right] = 1;

helper(root->right);}}

mapint> m;//存放結點及其連續序列的長度

};#endif

LintCode 595 二叉樹最長連續序列

給一棵二叉樹,找到最長連續路徑的長度。這條路徑是指 任何的節點序列中的起始節點到樹中的任一節點都必須遵循 父 子 聯絡。最長的連續路徑必須是從父親節點到孩子節點 不能逆序 樣例舉個例子 1 3 2 4 5 最長的連續路徑為 3 4 5,所以返回 3。2 3 2 1 最長的連續路徑為 2 3 而不是 ...

二叉樹最長路徑

先參考最長子序列求解方法,先序遍歷的時候,我們把當前遍歷的分支作為乙個序列,然後利用最長序列的方式求解。遞迴過程中,保留樹的高度,用高度差作為長度。注意遞迴結束時,需要從雜湊表中移除當前節點的值。include include include include const int tag 100 st...

二叉樹 根據二叉樹遍歷序列構造二叉樹

二叉樹的節點型別宣告如下 struct btnode 定理1任何 n 0 個不同節點的二叉樹,都可由它的前序序列和中序序列唯一地確定。根據前序遍歷的特點,知前序序列 presequence 的首個元素 presequence 0 為二叉樹的根 root 然後在中序序列 insequence 中查詢此...