1-1
某二叉樹的后序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無右孩子。
正確:
后序遍歷:左右根;
中序遍歷:左根右;
(左)(根)(右) ==(左)(右)(根)
(右) = NULL --------> (左)(根)==(左)(根)
得:二叉樹任何節點一定都沒右子節點;
1-2
某二叉樹的后序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無左孩子
錯誤:
后序遍歷:左右根;
中序遍歷:左根右;
令 (左)=NULL
后續遍歷 (右)(根)
中序遍歷 (根)(右)
順序相反,不滿足遍歷序列相同的題目的前提
得:二叉樹中任何結點一定都無左孩子結論錯誤

完全二叉樹:一棵二叉樹至多只有最下面的一層上的結點的度數可以小於2,並且最下層上的結點都集中在該層最左邊的若干位置上,則此二叉樹成為完全二叉樹
平衡二叉樹:它是一 棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹
1-4
若A
和B
都是一棵二叉樹的葉子結點,則存在這樣的二叉樹,其前序遍歷序列為...A...B...
,而中序遍歷序列為...B...A...
。
錯誤:
遍歷順序:
中序遍歷 :左根右 后序遍歷 :左右根 前序遍歷 :根左右
確定了A,B都不是根節點;
根據三種遍歷順序,確認都是 左右 順序的遍歷
前序遍歷確認了 A 先於 B 被遍歷, 那么中序遍歷也必須是 A 先於 B ;
錯誤:
特例: A-B-C 一條線上,C是根節點;
中序遍歷:ABC
前序遍歷:CBA
1-6
某二叉樹的前序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無左孩子
正確:
中序遍歷 :左根右 后序遍歷 :左右根 前序遍歷 :根左右令(左)=NULL
中序:(根)(右)==前序:(根)(右)
已知一棵二叉樹的先序遍歷結果是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,即為 (根右)==(根右),成立,成立條件是沒有左子樹,也就是只有右子樹。
已知一棵二叉樹的樹形如下圖所示,其后序序列為{ e
, a
, c
, b
, d
, g
, f
}。樹中與結點a
同層的結點是:
后序遍歷:左右根
這是前序列遍歷,其余的根據順序略微改動下位置就好、
void preorder(bintree t){
if(t){
printf("%c ",t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}
第一層: f
第二層: c g
第三層: a d
第四層: e b
題目可知:根節點是 4
后序遍歷序列是{ 1, 3, 2, 6, 5, 7, 4 }
中序遍歷序列是{ 1, 2, 3, 4, 5, 6, 7 }
對照進行划線;可知根節點左子樹有 3 節點,右子樹也是3節點,根據理解進行構圖
對於左子樹來說,根節點是 2 ,對右子樹來說,根節點是 7,這是根據后序遍歷確定的;
三個元素,確定了根節點,很容易的得到左子樹為:
三個元素,確定了根節點7,也可得到右子樹為:
中序遍歷是: 5 6 7 。可以確定,7 節點沒有右子樹,根據后序遍歷可得右子樹:
綜上所訴:樹為
然后就看圖回答問題;
完全二叉樹的定義:
子節點只有一個的節點數目只有 0 或 1 個!(簡化版定義),建議去看正規的介紹;
二叉搜索樹的定義:
左子樹上所有結點的值均小於它的根結點的值; 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值
即:對任何一個節點T來說: T->Left->data < T->data < T->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.由二叉樹的前序遍歷(后序遍歷)和中序遍歷輸出后序遍歷(前序遍歷)
求個關注或推薦!