计算机考研专业课复习科目包括数据结构、操作系统、计算机组成原理、计算机网络四门课程。其中数据结构这一科目兼具理论与实践,要求同学们在复习过程中不仅要对教材的基本概念进行记忆,同时还要结合知识点掌握相应的实际操作知识。为帮助同学们在计算机专业课复习上卓有成效,中公考研将为同学们整理全面的考点梳理,今天为大家带来的是数据结构的相关内容,请同学们适当参考,结合自身实际在全面复习的基础上进行重点理解记忆。
3.孩子-兄弟表示法(或二叉树表示法)
data
nextsibiling
fchild
结点形式(同二叉树链式结构):
其中fchild为指向本结点第一孩子的指针,而nextsiling为指向本结点右兄弟的指针。
1.树T转换成二叉树BT(T?BT)
转换方法:对树T中每一结点,除保留第一孩子外,断开它到其它孩子的指针,并将各兄弟连接起来。转换后,原结点的第一孩子为左子,而原结点的右兄弟为其右子。
在转换成的二叉树中,根结点的右子一定为空
2森林F转换成二叉树BT(F?BT)
方法:先将F中各树转换成二叉树;然后各二叉树通过根的右指针相连。
3.二叉树BT恢复成森林F(BT?F)
这是F?BT的逆变换。
方法:对BT中任一结点,其Lchild所指结点仍为孩子,而Rchild所指结点为它的右兄弟,即“左孩子,右兄弟”。
先序遍历森林F
设F={ T1,T2,………..,Tm },其中Ti(1≤i≤m)为F中第i棵子树。
方法:若F≠φ,则:
(1)访问F中T1之根;
(2)先序遍历T1之根下的各子树(子森林);
(3)先序遍历除T1之外的森林(T2,……,Tm)。
显然(2)、(3)为递归调用,即:若子森林存在,仍按先序遍历方法对其遍历。
方法等价为:先将F转换二叉树BT,然后对BT按前序(DLR)遍历,其结果是一样的。
后序遍历森林F
方法:若F≠φ,则:
(1)后序遍历F中T1之根下的各子树(子森林);
(2)访问T1之根;
(3)后序遍历除T1之外的森林{ T2,……,Tm }。
显然,(1)、(3)递归调用,即:若子森林存在,仍按后序遍历方法对其遍历。
此方法等价为:先将F转换成二叉树BT,然后对BT按中序(LDR)遍历
例题:设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有( C )个。 我不明白的题
A. n-1 B.n C. n+1 D. n+2
Huffman树
设H树中叶结点数为n(即给定的权值个数),因H树中出度=1的结点数为0,出度=2的结点数为n-1,故H树中总的结点数m=2n-1。因而可将树中全部结点存储在一个一维数组中。因而可将树中全部结点存储在一个一维数组中。