,所以访问H结点,T11的左子树先序遍历结束,根据先序遍历的原则,进行先序遍历T11的右子树。由于T11的右子树只有I结点,故访问此结点后T11的右子树的先序遍历结束。先序遍历完T11子树后,返回T1子树,先序遍历T1的右子树。先序遍历完T1子树后,接着先序遍历根结点A的右子树T2。先序遍历完T2后,该二叉树的所有结点都已经访问过,各结点被访问的顺序为:ABDHIECFG
1中序遍历:先中序遍历左子树,然后再访问根结点,最后再中序遍历右子树。对图112的二叉树进行中序遍历,访问各个结点的顺序为:HDIBEAFCG2后序遍历:先后序遍历左子树,然后再后序遍历右子树,最后再访问根结点。对图112的二叉树进行后序遍历,访问各个结点的顺序为:HIDEBFGCA。
下面树的先序、中序、后续遍历的结果依次为__abdcef_、bdaecf_、_dbefca
a
cb
e
f
d
f
6、一棵二叉树如图所示,它的中序遍历的结果为(B)A、abdgcefhB、dgbaechfC、gdbehfcaD、abcdefgh
a
b
c
f
d
e
hg
小结:逻辑结构可分为线性表和非线性表。线性表包括栈、队列,其存储方式为顺序存储、链式存储均可。链式型有:线性链表,带链的栈,带链的队列,
循环链表等。非线性表包括树二叉树,其存储方式为链式存储。
17查找技术
只能使用顺序查找的两种情况:(1)线性表为无序表,不管是顺序存储还是链式存储;(2)表采用链式存储结构,即使是有序线性表。二分法查找只适用于顺序存储的有序表,对于长度为
的有序线性表,最坏情况只需比较log2
次,而顺序查找需要比较
次。
18排序技术
排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。交换类排序法:(1)冒泡排序法,需要比较的次数为
12;
2快速排序法。插入类排序法:(1)简单插入排序法,最坏情况需要
12次比较;
2希尔排序法,最坏情况需要O
15次比较。
选择类排序法:(1)简单选择排序法最坏情况需要
12次比较;
2堆排序法,最坏情况需要O
log2
次比较。
相比以上几种除希尔排序法外,堆排序法的时间复杂度最小。
第二章程序设计基础
21程序设计设计方法和风格
“清晰第一、效率第二”已成为当今主导的程序设计风格。形成良好的程序设计风格需注意:详见书P271、源程序文档化;2、数据说明的方法;3、语句的结构;4、输入和输出。注释分序言性注释和功能性注释。语句结构清晰第一、效率第二。
f
22结构化程序设计
结构化程序设计方法的四条原则是:1、自顶向下;2、逐步求精;3、模块化;4、结构化编码限制使r