二叉搜尋樹

2022-07-13 03:54:11 字數 1776 閱讀 7857

有乙個二叉搜尋

樹用來儲存字元'a', 'b', 'c','d','e','f','g','h'下面哪個結果是後序樹遍歷結果)[美國著名軟體

公司m2023年11月筆試題]

a.adbcegfh

b.bcagehfd

c.bcaefdhg

d.bdacefhg

解析:二叉搜尋樹(binary search tree),或者是一棵空樹,或者是具有下列性質的二

叉樹:對於樹中的每個節點x,它的左子樹中所有關鍵字的值都小於x的關鍵字值,而它的

右子樹中的所有關鍵字值都大於x的關鍵字值。這意味著該樹所有的元素都可以用某種統一

的方式排序。

例如下面就是一棵合法的二叉搜尋樹:

它的左、右子樹也分別為二叉搜尋樹。

二叉搜尋樹的查詢過程和次優二叉樹類似,通常採取二叉鍊錶作為二叉搜尋樹的儲存節

構。中序遍歷二叉搜尋樹可得到乙個關鍵字的有序序列,乙個無序序列可以通過構造一棵二

叉搜尋樹變成乙個有序序列,構造樹的過程即為對無序序列進行排序的過程。每次插入的新

的節點都是二叉搜尋樹上新的葉子節點,在進行插入操作時,不必移動其他節點,只需改動

某個節點的指標,由空變為非空即可。搜尋、插入、刪除的複雜度等於樹高,即o(log(n))。

二叉樹的乙個重要的應用是它們在查詢中的使用。二叉搜尋樹的概念相當容易理解,二

叉搜尋樹的性質決定了它在搜尋方面有著非常出色的表現:要找到一棵樹的最小節點,只需

要從根節點開始,只要有左兒子就向左進行,終止節點就是最小的節點。找最大的節點則是

往右進行。例如上面的例子中,最小的節點是1,在最左邊;最大的節點是8,在最右邊。

對於本題而言,二叉搜尋樹則必滿足對樹中任一非葉節點,其左子樹都小於該節點值,

右子樹所有節點值都大於該節點值。節合二叉樹後序遍歷的特點,最後乙個肯定是根節點

a.adbcegfh

->(h)左子樹(adbcegf),右子樹(空) (左子樹必須都小於根h,右子樹都大於根h)

-->(f)左子樹(adbce),右子樹(g)

--->(e)左子樹(adbc),右子樹(空)

---->(c)剩下(adb)不能區別左子樹,右子樹,所以選項a不成立;

b.bcagehfd

->(d, (bca), (gehf))

-->gehf, f為根,剩下geh不能根據f分成兩個子段,所以b不成立;

選項c成立;

d.bdacefhg

->(g, (bdacef), (h))

-->(g, (f, (bdace), ()), (h))

--->(g, (f, (e, (bdac), ()), ()), (h))

---->bdac子樹,c為根,據c不能將序列bda劃分為兩個子串行,使得左子串行全小於

c,右子串行全大於c

所以選項d不成立。

答案:c

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...