根據先序遍歷和中序遍歷的結果重建二叉樹。

2021-08-28 08:59:45 字數 1112 閱讀 5332

二叉樹是由n個(n>=0)個節點所構成的有限集合。當n=0時二叉樹為空樹;當n>0時,二叉樹滿足以下條件:

二叉樹的每個節點至多有兩個子節點;

二叉樹對於子節點有嚴格的左右之分,即為有序的。

層次遍歷:按層從左到右訪問節點

先序遍歷dlr:訪問根節點;先序遍歷左子樹;先序遍歷右子樹

中序遍歷ldr:中序遍歷左子樹;訪問根節點;中序遍歷右子樹

後序遍歷lrd:後序遍歷左子樹;後序遍歷右子樹;訪問根節點

對於下圖二叉樹:

層次遍歷:abcdefg

先序遍歷:abdecfg

中序遍歷:dbeacgf

後序遍歷:debgfca

取先序遍歷序列中的第乙個節點作為二叉樹的根節點

在中序遍歷中尋找根節點,確定根節點在中序遍歷序列中的位置i(0<=i<=length-1),其中length為二叉樹節點的個數

先序遍歷序列中:根節點之後的i(1到i)個節點為左子樹的先序遍歷序列,剩下的length-i-1個節點為右子樹的先序遍歷序列

中序遍歷序列中:根節點之前的i(0到i-1)個節點為左子樹的中序遍歷序列,根節點後的length-i-1個節點為右子樹的中序遍歷序列

在得到的左右子樹序列中重複步驟1和2得到根節點,再重複步驟3和4得到左右子樹的遍歷序列,以此遞迴便可以得到一棵唯一的二叉樹

根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。輸入格式 第一行給出正整數nn le 30 30 是樹中結點的個數。隨後兩行,每行給出nn個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。輸出格式 在一行中輸出preorder 以...

根據後序和中序遍歷輸出先序遍歷

本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數n 30 是樹中結點的個數。隨後兩行,每行給出n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空...

根據後序和中序遍歷輸出先序遍歷

n 是樹中結點的個數。隨後兩行,每行給出 n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。7 2 3 1 5 7 6 4 1 2 3 4 5 6 7preorder 4 1 3 2 6 5 7 思路 一.根據後序遍歷和中序遍歷建樹 1.二叉鍊錶結構的定義 ...