二叉树的应用
1 二叉排序树(BST)
l 特点:
左子树结点值 < 根结点值 < 右子树结点值
l 查找
算法思想:若二叉排序树为非空,则给定值与根结点的关键字比较,若相等,则查找成功;若不等,则当根结点的关键字大于给定的关键字值时,在根结点的左子树查找,否则根结点的右子树查找。(有递归和非递归算法实现)
l 插入
【注】二叉树是动态集合,树的结构通常不是一次性形成的,而是在查找过程中,当树中不存在关键字等于给定值得结点时再插入。
算法思想: 若原二叉排序树(或递归子树)为空,则直接插入结点; 否则若关键字k小于根结点关键字,则插入到根结点的左子树,反之,插入到根结点右子树。
二叉排序树插入新结点一定是某个叶结点。
l 构造
算法思想: 依次输入数据元素,并调用插入函数完成插入动作
l 删除
【引】删除动作要保证二叉排序树的性质不会丢失。
1. 叶结点,直接删除
2. 该结点z只有一棵左子树或右子树,则让z的子树成为z父节点的子树。
3. 该结点z有左右两棵子树,则令z的直接前驱(或直接后继)替代z(值替换),然后从二叉排序树中删除这个直接前驱(或直接后继)。这样就转换成了第一种或者第二种情况。(值替换->1,2类型删除)