(数据结构内容整理)
重要题型
一、树
1.二叉树的遍历
课本定义P128 == 前提:明白三种遍历的定义==
- 先序遍历
- 中序遍历
- 后序遍历
基础题型
-已知先序(后序)和中序,还原二叉树,并写出另外一种序的排列
重要知识点
先序:序列开头是根结点
后序:序列尾部是根结点
中序:某个节点的左边序列是左子树,右边序列是右子树
方法
(1)找树或者子树的根结点:先序序列的开头(后序序列的尾部)
(2)根据根结点划分左右子树:中序序列的特点
(3)不断重复以上步骤
例子:
先序:OWPEKMNJL
中序:WPOMKNELJ
1.根据先序得到根结点O
2.划分中序序列
WP | O | MKNELJ
可知左子树是 W P 右子树 M K N E L J
3.操作左子树 W P
此时先序: WP 中序: WP
- 根据先序序列得到 W 是 W P的根结点
- 划分中序序列 空序列 / W / P 可知左子树为空,右子树为P
- 此时可以画出部分二叉树
4.操作右子树 M K N E L J
此时先序:EKMNJL 中序:MKNELJ
- 根据先序序列得到根结点为E
- 划分中序序列 M K N / E / L J 可知 MKN 是左子树 ,LJ 是右子树
- 此时初步确定右子树的形状
5.进行MKN排列
此时先序:KMN 中序:MKN
- 根据先序找根结点 K
- 划分中序序列 M | K | N 可知左子树为 M ,右子树为 N
6.进行LJ排列
此时先序:JL 中序:LJ
- 根据先序找根结点J
- 划分中序序列 L | J | 空序列 可知左子树为 L, 无右子树
综上可得二叉树为
2.二叉查找树/二叉排序树/二叉搜索树
课本定义是在P227
二叉排序树(Binary Sort Tree)或者是一颗空树;或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)它的左右子树也分别为二叉排序树。
基本要求
给定一个序列将其按照给定规则进行建立二叉排序树 (插入)
方法总结
根据给定的规则