BST and Heap详解
BST(Binary Search Tree) 基本特点: 二叉树 集合中的数据具有可比较大小的关键码 数据之间满足BST特性 中序遍历可得到一个递增的数据序列(可作为判断一棵二叉树是否是BST的方法) 同一个数据集合,可存在多个不同形态的BST树 基本操作 问题描述+求解动机+算法思想+算法步骤+性能分析 进行操作,都需要: 先找到要操作的数(位置),进行操作,保证BST的特性,保障优的算法性能。 查找(logn) 插入(logn ~ n) 若给定值 小于 根结点的关键字,则继续 在 左 子树上进行查找 若给定值 小于 根结点的关键字,则继续在 左 子树上进行插入; 将返回值(结点指针)设置为(当前)根结点的左孩子 若给定值 大于 根结点的关键字,则继续 在 右 子树上进行查找 若给定值 大于 根结点的关键字,则继续在 右 子树上进行插入; 将返回值(结点指针)设置为(当前)根结点的右孩子 若给定值等于根结点的关键字,则查找 成功 / 删除操作: 从最简单的情况开始—— 删除最小值 ; 由BST特性可知,BST中最小值一定在左子树的最左边取到,于是去get到它。 BST删除最小值算法思想(非递归) 1)定义一个指向BST树结点的临时指针变量p和pp。 2)从BST的根结点开始;将其值赋值给p。 3)若p的左孩子不等于空指针,将p的值赋值给pp;然后