二叉樹 筆1

2021-06-20 22:47:14 字數 1007 閱讀 1115

關於二叉樹中,對於前序、中序、後序三者中,知道知道兩個,求另外的乙個有什麼方法?  比如題目:若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其後序遍歷的結點訪問順序是()?
解答過程:

1)定**釋:樹的遍歷的三種情況,是根據左子樹、右子樹、根這3者的不同訪問次序來定義的。根左右(根先訪問),則為先序遍歷;左根右,則為中序遍歷;左右根,則為後序遍歷。

2)已知先序和中序遍歷結果,求樹的結構和後序遍歷結果:

先序遍歷結果給我們帶來的資訊是,根在哪。

中序遍歷結果給我們帶來的資訊是,左、右子樹在哪。

所以樹結構的還原過程是,根據先序找到乙個根;然後根據這個根和中序遍歷結果找到它的相應的左、右子樹;依次往下。

對於例題而言:

先序遍歷的第乙個節點是a,則說明a是整棵樹的根。然後在中序遍歷結果中,由a斷開,找到a的左子樹和右子樹,即dgb是a的左子樹中的節點集合,echf是a的右子樹集合。(dgb)a(echf)

然後開始遞迴求解:還原(dgb)和(echf)

(dgb)的先序遍歷結果是:bdg(從題目中的先序遍歷中,擷取)

(dgb)的中序遍歷結果是:dgb(從題目中的中序遍歷中,擷取)

所以b為根,(dg)為左子樹,右子樹為空。即(dgb)= (dg)b

同理:(echf)=(e)c(hf)

第3次遞迴:(dg)= d(g);(hf)= (h)f

最後得到的結果就是:

((d(g))b)a ((e)c((h)f))

(在這種表示中,括號的層數代表在樹中的層數)

ab c

d e f

g h

根據這個樹,後序遍歷為先左、右,最後根

先訪問(dgb) (echf) 然後是a

(dgb)這棵樹的後序遍歷為gdb

(echf)這棵樹的後序遍歷為ehfc

所以最後結果為gdb ehfc a

二叉樹 二叉樹

題目描述 如上所示,由正整數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...

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

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...