重建二叉樹(牛客網)

2021-08-29 20:17:12 字數 1324 閱讀 9073

從前序遍歷和中序遍歷重建乙個二叉樹。

步驟如下:

1、根據前序遍歷的第乙個元素建立根節點

2、在中序遍歷找到這個元素,左邊的元素都是根節點的左子樹的結點,右邊的元素都是右子樹的結點

3、在前序遍歷中找到屬於左右子樹的前序序列

4、左子樹重複123

5、右子樹重複123

6、返回根節點

例如前序遍歷序列和中序遍歷序列

1、根節點 1

2、中序遍歷中找到 1 ,左邊4,7,2都是左子樹的結點,右邊5,3,8,6都是右子樹的結點

3、左子樹的前序序列2,4,7,右子樹的前序序列3,5,6,8

4,左子樹的根節點 2,左子樹的結點4,7,右子樹的結點 null

5,右子樹的根節點 3,左子樹的結點5,右子樹的結點8,6

最後得到:

2                       3

4              null          5             6

null         7               null    null    8     null

上**。

/**

* definition for binary tree

* public class treenode

* }*/public class solution

treenode node = new treenode(pre[0]);

int index = 0;

for(; index < in.length; index++)

}int newpre = new int[index];

int newin = new int[index];

for(int i = 0; i < index; i++)

for(int i = 0; i < index; i++)

node.left = reconstructbinarytree(newpre, newin);

newpre = new int[pre.length - index - 1];

newin = new int[in.length - index - 1];

for(int i = 0; i < pre.length - index - 1; i++)

for(int i = 0; i < in.length - index - 1; i++)

node.right = reconstructbinarytree(newpre, newin);

return node;

}}

重建二叉樹 牛客

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。首先講一下對二叉樹幾種遍歷的記憶理解方法,主要是結點的序列位置不同。根據前序遍歷的特點,樹的根結點一定在第一位 中序遍歷的特點,根結...

牛客網 二叉樹

如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個...

牛客網 對稱二叉樹(遞迴)

一棵有點權的有根樹如果滿足以下條件,則被軒軒稱為對稱二叉樹 1.二叉樹 2.將這棵樹所有節點的左右子樹交換,新樹和原樹對應位置的結構相同且點權相等。下圖中節點內的數字為權值,節點外的 id 表示節點編號。現在給出一棵二叉樹,希望你找出它的一棵子樹,該子樹為對稱二叉樹,且節點數 最多。請輸出這棵子樹的...