二叉树的常考的笔试面试题:
1、把一棵二叉树转换为它的镜像树
2、输入两棵二叉树A、B,判断B是不是A的子结构(我们约定空树不是任意一棵树的子结构)
3、计算出有序二叉树中第k大的数
4、判断一棵二叉树是否是对称
5、将一棵有序二叉树转换为一个有序的双向循环链表
6、通过一个函数,把一棵二叉树按照之字型打印,即第一层从左往右打印,第二层从右往左打印,第三层又从左往右打印,以此类推。【使用两个栈】
线索二叉树:
规律:在有n个节点的链式二叉树中,必定有n+1个空指针域
链式二叉树中有很多的空指针,可以让这些指针的一部分指向下一个节点,这样遍历树时可以不用递归而是使用循环,提高树的遍历速度
中序线索二叉树:
节点数据项:
数据
左子树指针
右子树指针
右子树指针标志(真表示指向的是下一个节点,假表示指向的就是右子树)
实现过程:
1、创建线索
2、按照线索进行遍历
注意:线索二叉树的主要目的是为了提高树的遍历速度
选择树:(胜者树、败者树)
是一棵完全二叉树,把待比较的数据存储在最后一层,根节点是左右子树中的一个,是它们的最大或最小的作为根,选择树的功能是能够方便地找出树中的最大值或者最小值。
堆:
是一种完全二叉树,不适合链式存储
大顶堆(大根堆):根节点比左右子树大
小顶堆(小根堆):根节点比左右子树小
数据项:
存储数据的内存首地址
容量
数量
运算:
创建、添加、删除、空堆、满堆、堆顶
使用堆可以实现优先队列
下周预告:
平衡二叉树
图
查找算法
排序算法