判斷題
1.'關於樹和二叉樹
二叉樹是度為 2 的樹。
2.具有10個葉結點的二叉樹中,有9個度為2的結點。
3.某二叉樹的前序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無左孩子。
4.若一個結點是某二叉樹的中序遍歷序列的最后一個結點,則它必是該樹的前序遍歷序列中的最后一個結點。
5.某二叉樹的前序和中序遍歷序列正好一樣,則該二叉樹中的任何結點一定都無右孩子。
6.若A
和B
都是一棵二叉樹的葉子結點,則存在這樣的二叉樹,其前序遍歷序列為...A...B...
,而中序遍歷序列為...B...A...
。
先序中序后序是對根結點而言的,葉子結點的順序保持不變。
7.二叉樹的前序遍歷並不能唯一確定這棵樹,但是如果我們還知道該樹的根結點是那一個,則可以確定這棵二叉樹( )。
8.將一棵完全二叉樹存於數組中(根結點的下標為1)。則下標為23和24的兩個結點是兄弟。
選擇題
1.設樹T的度為4,其中度為1、2、3、4的結點個數分別為4、2、1、1。則T中有多少個葉子結點?
B.6
C.8
D.10
結點個數和度數滿足下面的公式:
2.設每個d叉樹的結點有d個指針指向子樹,有n個結點的d叉樹有多少空鏈域?
B.n(d−1)
C.n(d−1)+1
D.以上都不是
3.已知一棵二叉樹的先序遍歷結果是ABC,則以下哪個序列是不可能的中序遍歷結果:
B.BAC
C.CBA
D.CAB
葉子結點的相對順序不能變,A肯定是根結點,C一定是葉子結點,B不一定,可以排除A、B,中序CAB說明B和C都是葉子結點,所以錯。
4.給定二叉樹如下圖所示。設N代表二叉樹的根,L代表根結點的左子樹,R代表根結點的右子樹。若遍歷后的結點序列為3、1、7、5、6、2、4,則其遍歷方式是:
B.RNL
C.LRN
D.RLN
5.設高為h的二叉樹(規定葉子結點的高度為1)只有度為0和2的結點,則此類二叉樹的最少結點數和最多結點數分別為:
B.2h−1, 2 h−1
C.2h−1, 2 h-1−1
D.2 h-1+1, 2 h−1
最少的情況為除了第一層,其他層結點個數為0;最多的情況是滿二叉樹。
6.在下述結論中,正確的是:
①只有一個結點的二叉樹的度為0;
②二叉樹的度為2;
③二叉樹的左右子樹可任意交換;
④深度為K的完全二叉樹的結點個數小於或等於深度相同的滿二叉樹。
B.②④
C.①②③
D.②③④
7.任何一棵二叉樹的葉結點在先序、中序和后序遍歷序列中的相對次序
B.不發生改變
C.不能確定
D.以上都不對
8.如果二叉樹的前序遍歷結果是12345,后序遍歷結果是32541,那么該二叉樹的中序遍歷結果是什么?
B.23154
C.24135
D.無法確定
能確定2和4一定是1的子節點,但無法確定3和5,先序和后序不能確定樹。
9.要使一棵非空二叉樹的先序序列與中序序列相同,其所有非葉結點須滿足的條件是:
B.只有右子樹
C.結點的度均為1
D.結點的度均為2
10.已知一棵二叉樹的樹形如下圖所示,其后序序列為{ e
, a
, c
, b
, d
, g
, f
}。樹中與結點a
同層的結點是:
B.d
C.f
D.g
11.如果二叉樹的后序遍歷結果是FDEBGCA,中序遍歷結果是FDBEACG,那么該二叉樹的前序遍歷結果是什么?
B.ABDFEGC
C.ABDFECG
D.ABDEFCG
12.已知二叉樹的后序遍歷是dabec,中序遍歷是debac,則其前序遍歷是()。
B.decab
C.deabc
D.cedba
13.某二叉樹的先序序列和后序序列正好相反,則下列說法錯誤的是()。
B.若二叉樹不為空,則二叉樹的深度等於結點數
C.若二叉樹不為空,則任一結點不能同時擁有左孩子和 右孩子
D.若二叉樹不為空,則任一結點的度均為1
14.對二叉樹的結點從1開始進行編號,要求每個結點的編號大於其左右孩子的編號,同一結點的左右孩子中,其左孩子的編號小於其右孩子的編號,可采用()遍歷實現編號。
B.后序
C.層序
D.先序
15.在一非空二叉樹的中序遍歷中,根結點的右邊()。
B.只有右子樹上的部分結點
C.只有左子樹上的部分結點
D.只有左子樹上的全部結點
16.一棵樹可轉換成為與其對應的二叉樹,則下面敘述正確的是()。
B.樹的后根遍歷序列與其對應的二叉樹的后序遍歷相同
C.樹的先根遍歷序列與其對應的二叉樹的中序遍歷相同
D.以上都不對
將樹轉換成與其對應的二叉樹,將結點的孩子放在左子樹;將結點的兄弟放在右子樹。
17.已知一棵二叉樹的先序序列和中序序列分別為GFDBHCEA和DFHBGCAE,則該二叉樹的后序序列為()。
B.DHBFEACG
C.DBHFAECG
D.DFAEHBCG
18.設x和y是二叉樹中的任意兩個結點,若在先序遍歷中x在y之前,而在后序遍歷中x在y之后,則x和y的關系是()。
B.x是y的右兄弟
C.x是y的祖先
D.x是y的子孫
19.以下算法的功能是()。
int function(BTreeNode* BT, ElemType x){
int n=0;
if(BT!=NULL)
{
if(BT->data==x) n++;
n+= function (BT->left, x);
n+= function (BT->right, x);
}
return n;
}
B.求二叉樹中值為x的結點個數
C.求二叉樹中值為x結點為根的子樹結點數
D.求二叉樹左右子樹結點數
20.以下算法的功能是()。
void test(bitree *t)
{
if (t)
{
test(t->lchild);
test(t->rchild);
cout<<t->data;
}
}
B.前序遍歷二叉樹
C.中序遍歷二叉樹
D.后序遍歷二叉樹
21.一棵有1025個結點的二叉樹的高度為多少?
B.11
C.11~1025之間
D.10~1024之間
小心不一定是完全二叉樹
22.一棵度為4的樹中有20個度為4的結點、10個度為3的結點、1個度為2的結點和10個度為1的結點, 則葉子結點有多少個?
B.82
C.113
D.122
程序填空題
下列代碼的功能是將二叉樹T
中的結點按照層序遍歷的順序輸出。
typedef struct TreeNode *Tree; struct TreeNode { int Key; Tree Left; Tree Right; }; void Level_order ( Tree T ) |