二叉查找树是一种满足如下性质的二叉树:
(1) 某个节点的左子树中的所有节点的值都比这个节点的值小
(2) 某个节点的右子树中的所有节点的值都比这个节点的值大
下面有Go实现的非常详尽的代码,采用了Go风格的OO进行了封装。代码中主函数的例子的参照图如下:
这是我的二叉查找树的使用手册:
type BiSearchTree struct
func (bst *BiSearchTree) Add(data float64) //插入节点
func (bst *BiSearchTree) Delete(data float64) //删除节点
func (bst BiSearchTree) GetRoot() *TreeNode //获取根节点
func (bst BiSearchTree) IsEmpty() bool //检查树是否为空
func (bst BiSearchTree) InOrderTravel() //中序遍历(也就是从小到大输出)
func (bst BiSearchTree) Search(data float64) *TreeNode //查找节点
func (bst BiSearchTree) GetDeepth() int //获取树的深度
func (bst BiSearchTree) GetMin() float64 //获取值最小的节点
func (bst BiSearchTree) GetMax() float64 //获取值最大的节点
func (bst BiSearchTree) GetPredecessor(data float64) *TreeNode //获取直接前驱
func (bst BiSearchTree) GetSuccessor(data float64) *TreeNode //获取直接后继
func (bst *BiSearchTree) Clear() //清空树