有序二叉树:
1、节点没有相等的值,左子树的数据一定小于根、根一定小于右子树
2、左子树的数据一定小于根、根一定小于或等于右子树
3、左子树的数据一定小于或等于根、根一定小于右子树
都称为有序二叉树、二叉排序树、二叉搜索树、或者二叉查找树
注意:由于这种树的节点需要频繁地插入、插入,因此不适合采用顺序存储
注意:由于这种树的中序遍历就是数据从小到大排序,所以有序二叉树也是一种排序算法,同时对有序二叉树中数据的查找又天然是二分查找,因此经常考
线索二叉树:
规律:在有n个节点的链式二叉树中必定有n+1个空指针
链式二叉树中有很多的空指针,可以让这些指针指向下一个或者上一个节点,此时遍历二叉树时可以不使用递归,而使用循环也能实现,这样可以提高遍历速度
中序线索二叉树节点数据项:
数据
左子树指针
右子树指针
右子树标志(假:表示指向的是真正的右子树,真:表示指向的是中序的下一个节点)
实现过程:
1、创建线索
2、根据线索遍历
作用:利用不使用的空指针作为线索,为了提高树的遍历效率
作业:
1、把一棵二叉树转换成它的镜像树
2、输入两棵二叉树A、B,判断B是不是A的子结构(空树不是任意一棵树的子结构)
3、把一棵有序二叉树转换为一个有序的双向链表
4、计算出有序二叉树中倒数第k大的值
5、判断一棵树是否对称
6、实现之字形打印一棵二叉树,第一行从左到右,第二行从右到左,第三行又从左到右打印,依此类推