二叉树的遍历
(图1)
(图2)
二叉树的遍历运算(递归定义)
(1) 先序遍历: 根,左子树,右子树 根在先
例如图1:271653894;图2:ABCKDEHFJG
(2) 中序遍历: 左子树,根,右子树 根在中
例如图1:175632849;图2:BKCAHEDHFG
(3) 后序遍历: 左子树,右子树,根 根在后
例如图1:153674982;图2:KCBHEJGFDA
题型一:已知其中一些遍历结果,求其他遍历结果
题型二:统计n个不同的点可以构造多少棵不同的二叉树? Catalan数=C(n,2*n)/(n+1)
题型三:中缀表达式向前缀和后缀表达式的转化
每日练习
注:题1已知先序和中序,二叉树是唯一的。
题2已知后序和中序,二叉树是唯一的。
题3已知先序和后序,二叉树不是唯一的。
1、已知先序:1 2 4 3 5 7 6, 中序:2 4 1 7 5 3 6,请画出整棵二叉树。
2、已知后序:4 5 2 6 7 3 1, 中序:4 2 5 7 6 3 1,请画出整棵二叉树。
3、已知先序:1 2 3 4 5 6, 后序:3 2 5 6 4 1,请画所有二叉树的情况。
4、如果只知道先序abc,画出所有可能二叉树形状,并且计算多少种?
5、如果只知道中序abc,画出所有可能二叉树形状,并且计算多少种?
6、如果只知道后序abc,画出所有可能二叉树形状,并且计算多少种?
往年真题
1. 一颗二叉树的前序遍历序列是ABCDEFG,后序遍历序列是CBFEGDA,则根结点的左子树的结点个数可能是( )。
A.0 B.2 C.4 D. 6
2. 表达式a*(b+c)-d的后缀表达式是:
A) abcd*+- B) abc+*d- C) abc*+d- D) -+*abcd
3. 二叉树T,已知其先序遍历是1 2 4 35 7 6(数字为节点编号,以下同),后序遍历是4 2 7 56 3 1,则该二叉树的中根遍历是( )
A.4 2 1 7 5 3 6 B.2 4 1 7 5 3 6 C.4 2 1 75 6 3 D.2 4 1 57 3 6
4. 二叉树T,已知其先根遍历是1 2 4 35 7 6(数字为结点编号,以下同),中根遍历是2 4 1 57 3 6,则该二叉树的后根遍历是( )
A. 4 2 5 7 6 3 1 B. 4 2 7 5 6 3 1 C. 7 4 2 5 6 3 1 D. 4 2 7 6 5 3 1
5. 已知7个节点的二叉树的先根遍历是1 2 4 5 6 3 7(数字为结点的编号,以下同), 后根遍历是4 6 5 2 7 3 1, 则该二叉树的可能的中根遍历是( )
A. 4 2 6 5 1 7 3 B. 4 2 5 6 1 3 7 C. 4 2 3 1 5 6 7 D. 4 2 5 6 1 7 3
6. 已知7个节点的二叉树的先根遍历是1 2 4 5 6 3 7(数字为节点的编号,以下同),中根遍历是4 2 6 51 7 3,则该二叉树的后根遍历是( )
A.4 6 5 27 3 1 B.4 6 5 2 1 3 7 C.4 2 3 1 5 4 7 D.4 6 5 3 1 7 2
7. 已知6个结点的二叉树的先根遍历是1 2 3 4 5 6(数字为结点的编号,以下同),后根遍历是3 2 5 64 1,则该二叉树的可能的中根遍历是( )
A. 3 2 1 46 5 B. 3 21 5 4 6 C. 2 3 1 5 4 6 D. 2 31 4 6 5
二叉树的性质
性质1:二叉树第i层上的结点数目最多为。
性质2:深度为k的二叉树至多有
个结点(k≥1)。
性质3:二叉树中,叶子节点数为n0,度为2的结点数为n2,则n0=n2+1。
满二叉树
定义:一棵深度为k且有
个结点的二又树称为满二叉树。
特点:每层都饱满。
完全二叉树
定义:除了最下层,其他每层都饱满,最下层的结点都集中在该层最左边的若干位置上。
特点:
① 满二叉树是完全二叉树,完全二叉树不一定是满二叉树;
② 在满二叉树的最下层上,从最右边开始连续删去若干结点后得到的二叉树仍然是一棵完全二叉树。
③ 在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。④若I为结点编号则 如果I<>1,则其父结点的编号为I/2;若2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N,则无左儿子若2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右儿子。
例题1:画一个深度为4的满二叉树。画一个深度为4的完全二叉树。
例题2:具有3个结点的完全二叉树的深度为( )
具有6个结点的完全二叉树的深度为( )
具有8个结点的完全二叉树的深度为( )
具有125个结点的完全二叉树的深度为( )
具有1024个结点的完全二叉树的深度为( )
例题3:完全二叉树的结点数为n,求该完全二叉树的深度(层数)。
解:设所求完全二叉树的深度为k。
深度为k得完全二叉树的前k-1层是深度为k-1的满二叉树,一共有2^(k-1)-1个结点。
由于完全二叉树深度为k,故第k层上还有若干个结点,因此该完全二叉树的结点个数: n>2^(k-1)-1。
另一方面,假设节点最多,
由此可推出:
又因k-1和k是相邻的两个整数,故有。
每日练习
1.完全二叉树对每个节点从上往下,从左往右编号,第i层的第j个节点的编号是( )
A 2^i+j B 2^i+j-1 C 2^(i-1)+j D 2^(i-1)+j-1
2.一棵有n个节点的完全二叉树的高度是( )
3.二叉树是重要的数据结构,5个点的不同的二叉树有( )个。
A22 B 30 C 40 D 42
4.完全二叉树的结点个数为4 * N + 3,则它的叶结点个数为( )。
A 2*N B 2*N-1 C 2*N+1 D 2*N-2 E 2*N+2
5.满二叉树的叶结点个数为N,则它的结点总数为( )。
A N B 2*N C 2*N–1 D 2*N+1 E 2N–1
6.在有N个叶子节点的哈夫曼树中,其节点总数为( )
A 不确定 B 2N-1 C 2N+1 D 2N
7.一棵二叉树高度为h,所有结点的度为0,或为2,则此树最少有( )个结点
A2^(h-1) B 2^h-1 C 2^h+1 D h+1
8.按照二叉树的定义,具有3个结点的二叉树有( ) 种。
A 3 B 4 C 5 D 6
9、[多选题]对一个满二叉树,m个树叶,K个分枝结点,n个结点,则:( )
A.n=K+m B.K+m=2n C.m=K-1 D.n=2K-1
10. [多选题]关于二叉树的正确说法是( )。
A 完全二叉树一定是满二叉树 B 满二叉树一定是完全二叉树
C 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点
D 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1
E 在二叉树中,第i层的结点总数不超过2^(i-1);
11. 完全二叉树的结点个数为11,则它的叶结点个数为( )
A.4 B.3 C.5 D.2 E. 6
12. 一个高度为h 的二叉树最少结点数目是( )。
A 2^h+1 B h C 2^h-1 D 2^h E 2^(h-1)
13. 设有一棵k叉树,其中只有度为0和k两种结点,设n0,nk分别表示度为0和度为k的结点个数,试求出n0,nk之间的关系(n0=数学表达式,数学表达式仅含nk,k和数字)
14. 如果一棵m度树中有n1个度为1的结点,n2个度为2的结点,…….有nm个度为m的结点,则该树中叶结点的的个数=______________.