資料結構 二叉樹

2022-01-11 22:48:47 字數 3940 閱讀 6258

1-1

某二叉樹的後序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無右孩子。

正確:後序遍歷:左右根;

中序遍歷:左根右;

(左)(根)(右) ==(左)(右)(根)

(右) = null --------> (左)(根)==(左)(根)

得:二叉樹任何節點一定都沒右子節點;

1-2某二叉樹的後序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無左孩子

錯誤:後序遍歷:左右根;

中序遍歷:左根右;

令 (左)=null

後續遍歷 (右)(根)

中序遍歷 (根)(右)

順序相反,不滿足遍歷序列相同的題目的前提

得:二叉樹中任何結點一定都無左孩子結論錯誤

1-3  

存在一棵總共有2016個結點的二叉樹,其中有16個結點只有乙個孩子。

錯誤:沒確定是什麼型別的二叉樹;

二叉樹的型別:

滿二叉樹:除最後一層無任何子節點外,每一層上的所有結點都有兩個子結點二叉樹。 

完全二叉樹:一棵二叉樹至多只有最下面的一層上的結點的度數可以小於2,並且最下層上的結點都集中在該層最左邊的若干位置上,則此二叉樹成為完全二叉樹

平衡二叉樹:它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹 

ab都是一棵二叉樹的葉子結點,則存在這樣的二叉樹,其前序遍歷序列為...a...b...,而中序遍歷序列為...b...a...。 

錯誤:遍歷順序:

中序遍歷 

:左根右

後序遍歷

:左右根

前序遍歷

:根左右

確定了a,b都不是根節點;

根據三種遍歷順序,確認都是 左右 順序的遍歷

前序遍歷確認了 a 先於 b 被遍歷, 那麼中序遍歷也必須是 a 先於 b ;

1-5:

若乙個結點是某二叉樹的中序遍歷序列的最後乙個結點,則它必是該樹的前序遍歷序列中的最後乙個結點。 

錯誤:特例: a-b-c 一條線上,c是根節點;

中序遍歷:abc

前序遍歷:cba

1-6某二叉樹的前序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無左孩子

正確:

中序遍歷 :左根右

後序遍歷 :左右根

前序遍歷 :根左右令(左)=null

中序:(根)(右)==前序:(根)(右)

1-7已知一棵二叉樹的先序遍歷結果是abc, 則cab不可能是中序遍歷結果。

正確:遍歷比較多,強試就行:

1.找出根節點:a

2.可能的樹的型別,本題目只有兩種

3.這兩種樹的中序遍歷都不是cab,乙個是bac,乙個是cba

2-2如果一棵非空k(k≥2 叉樹t中每個非葉子結點都有k個孩子,則稱t為正則k叉樹。若t的高度為h(單結點的樹h=1),則t的結點數最少為:

這不就是滿樹(h0 = h-1) 節點數 + 1嗎

這道題目是 k0 +k1 +k2+.....kh-2   共有 h-1 個元素

1*(kh-1-1)/(k-1) + 1,選a?

nonono,讀題可知:

最少的情況是根節點加上根節點的k個孩子,加上根節點的第乙個孩子的k個孩子,再加上'''''',以此類推;

1+k+k+k+k+k (加 h-1 個) ,答案就是(h-1)*k+1,嗯,沒有,選d;

2-3要使一棵非空二叉樹的先序序列與中序序列相同,其所有非葉結點須滿足的條件是:

中序遍歷 :左根右

後序遍歷 :左右根

前序遍歷 :根左右

令(根左右)==(左根右);

令 左 =null,即為 (根右)==(根右),成立,成立條件是沒有左子樹,也就是只有右子樹。

2-4已知一棵二叉樹的樹形如下圖所示,其後序序列為。樹中與結點a同層的結點是:

後序遍歷:左右根

二叉樹遞迴遍歷**

這是前序列遍歷,其餘的根據順序略微改動下位置就好、

void preorder(bintree t)

}

第一層: f

第二層: c g

第三層: a d

第四層: e b

題目可知:根節點是 4

後序遍歷序列是

中序遍歷序列是

對照進行劃線;可知根節點左子樹有 3 節點,右子樹也是3節點,根據理解進行構圖

對於左子樹來說,根節點是 2 ,對右子樹來說,根節點是 7,這是根據後序遍歷確定的;

三個元素,確定了根節點,很容易的得到左子樹為:

三個元素,確定了根節點7,也可得到右子樹為:

中序遍歷是: 5 6 7 。可以確定,7 節點沒有右子樹,根據後序遍歷可得右子樹:

綜上所訴:樹為

然後就看圖回答問題;

完全二叉樹的定義:

子節點只有乙個的節點數目只有 0 或 1 個!(簡化版定義),建議去看正規的介紹;

二叉搜尋樹的定義:

左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值

即:對任何乙個節點t來說:  t->left->data  data   right->data;

2-11

任何一棵二叉樹的葉結點在先序、中序和後序遍歷序列中的相對次序

遍歷順序 ,令所有遍歷中的 根==null 遍歷順序都是 左右,即左節點先於右節點,不會改變順序;

2-xx

先序序列遍歷為 a b c d 的二叉樹有多少個?

14 運用卡特蘭算式 , n = 4 ,ans = c(n,2*n)/(n+1) = 14

2-16

某二叉樹的前序和後序遍歷序列正好相反,則該二叉樹一定是;

前序:nlr

後序:lrn

正好相反,只能讓r==null||l==null

應該是二叉樹的每個結點都只有乙個(左或右)子樹時,先序和和後序正好相反

這道題目我對答案暫時保持懷疑:

對於函式與程式設計題目可能會出現的考點,進行了乙個彙總:

1.二叉樹的一些操作

2.由二叉樹的前序遍歷(後序遍歷)和中序遍歷輸出後序遍歷(前序遍歷)

求個關注或推薦!

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...

《資料結構》 二叉樹

二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...

資料結構 二叉樹

1.二叉樹 二叉樹是一種特殊結構的樹,每個節點中最多有兩個子節點,如圖1所示 圖1 二叉樹 在圖1中的二叉樹裡,a c有兩個子節點,b d有乙個子節點。對於二叉樹還有圖2中的以下情況 圖2 二叉樹的特殊情況 在博文中還介紹了滿二叉樹和完全二叉樹還有其他的特殊二叉樹。2.二叉樹的實現 有兩種實現方式,...