二叉樹推導

2021-07-08 20:05:20 字數 1575 閱讀 8895

3 二叉樹的推導

3.1 由前序中序推導

已知一棵二叉樹的前序序列和中序序列,構造該二叉樹的過程如下:

ø 根據前序序列的第乙個元素建立根結點;

ø 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;

ø 在前序序列中確定左右子樹的前序序列;

ø 由左子樹的前序序列和中序序列建立左子樹;

ø 由右子樹的前序序列和中序序列建立右子樹。

3.2 由中序後序推導

已知一棵二叉樹的後序序列和中序序列,構造該二叉樹的過程如下:

ø 根據後序序列的最後乙個元素建立根結點;

ø 在中序序列中找到該元素,確定根結點的左右子樹的中序序列;

ø 在後序序列中確定左右子樹的後序序列;

ø 由左子樹的後序序列和中序序列建立左子樹;

ø 由右子樹的後序序列和中序序列建立右子樹。

詳細說明:

1.利用前序序列和中序序列恢復二叉樹

二叉樹的前序遍歷是先訪問根結點,再按前序遍歷方式遍歷根結點的左子樹和右子樹,即由前序序列可以確定

二叉樹的根結點。另一方面,中序遍歷是先中序遍歷左子樹,然後訪問根結點,最後中序遍歷右子樹;根結點

在中序序列中必然將結點分割成為兩個子串行,根結點前的子串行是其左子樹的中序序列,根結點後的子串行

是其右子樹的中序序列。現在可以根據這兩個子串行在前序序列中找到對應的左子串行和右子串行,兩個子序

列在前序中的第乙個結點分別是根結點的左孩子結點和右孩子結點,即左子樹和右子樹的根結點;此時左右子

樹的根結點又分別把左右子串行各劃分成兩個子串行。如此一直做下去,由前序序列確定各級子樹的根結點,

由中序序列確定隸屬於各級子樹的左右子樹的結點,當取盡前序序列中的所有結點時,各級子樹的左右孩子都

唯一確定了,二叉樹也就恢復了;而且這種恢復是唯一的。

2.利用後序序列和中序序列恢復二叉樹

利用後序序列和中序序列也可以唯一確定一棵二叉樹。在恢復二叉樹的過程中,後序序列的作用如同前面的前

序序列一樣是確定各級子樹的根結點;無非是前序序列中第乙個結點是根結點而後序序列中最後乙個結點為根

結點。中序序列的作用仍然是確定隸屬於各級子樹的左右子樹中的結點,當各級子樹中的左右孩子都唯一確定

時,二叉樹就恢復了。

3.利用層次序列和中序序列恢復二叉樹

利用層次序列和中序序列也可以唯一確定(或恢復)一棵二叉樹。層次遍歷是從上到下處於不同層次的各級子樹

根結點的前後順序序列,在同層中是從左到右依次順序排列的。先由層次序列知其第乙個結點為二叉樹的根結

點,由中序序列區分隸屬於左右子樹的結點序列;這樣的過程一直進行下去直到其每一級子樹的孩子結點都唯

一確定,二叉樹就恢復了。

在上面討論的二叉樹的恢復過程中,中序序列所起的作用是很重要的,只有利用中序序列才能區分各級子樹中隸屬於

左右子樹的各結點,而前序序列、後序序列或層次序列的作用僅在於確定左右子樹的根結點。所以利用前序、後序和

層次序列的作用僅在於確定各級子樹的根結點。所以利用前序、後序還是層次序列中的任何兩種序列或三種序列全用

都不能唯一確定(或恢復)一棵二叉樹,這是因為只知根結點而無法區分左右子樹之緣故。

二叉樹遍歷 推導總結

第一次總結,個人淺見,望大牛們輕削,怕疼,呵呵 1.已知前序遍歷和中序遍歷序列,可以唯一確定一棵二叉樹。2.已知後序遍歷和中序遍歷序列,可以唯一確定一棵二叉樹。3.已知後續遍歷和前序遍歷序列,不能唯一確定一棵二叉樹。綜上 要想唯一確定乙個二叉樹,必須要有中序遍歷序列。遍歷規則 1 先序或者前序遍歷規...

二叉樹 二叉樹

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

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...