定义: 二叉排序树或者是一棵空树,或者是具有下列性质的
二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的
根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或
等于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的节点。
查找:
查找对于二叉树查找树来说很简单这也是二叉查找树的优势所在,和目标值一样查找成功,比当前节点大往右子树查找,比当前节点小往左子树查找,递归下去即可。算法复杂厚度为O(logn)。
插入: 二叉查找树插入都是叶子节点插入,首先第一步是查找,从根节点起,如果根节点为NULL,直接插入根节点即可,如果插入数据比插入节点大,往右子树插入,如果比插入节点小插入左子树,如果和插入节点相等,则在节点计数器加1。
算法复杂度
O(logn)。
查找树的建立: 建立就相当于把一个一个数,往一课树种做插入动作,算法复杂度O(nlogn)。
删除:
1、二叉查找树对的删除相对复杂点。如果删除节点没有左子树或者没有右子树那么只要把左儿子或者右儿子替换被删节点即可。
2、如果既没有左儿子也没有右儿子,直接删除即可,让父亲把指向儿子的指针置为空。
3、如果既有左儿子也有右儿子,找到右子树中的最小值替换被删除节点,同时删除改最小值(递归)算法复杂度为O(logn)