二叉排序树
二叉树中使用最广泛的就是搜索二叉树; 搜索二叉树还有其它名称:二叉排序树、二叉查找树等; 1.搜索二叉树的优点 1】有很好的查询性能 2】有很好的新增和删除的性能 3】若左子树不空,则左子树上所有结点的值均小于它的根结点的值 4】若右子树不空,则右子树上所有结点的值均大于它的根结点的值 5】左、右子树也分别为二叉排序树 如图:典型的搜索二叉树 对搜索二叉树进行中序遍历的结果就是元素从小到大排序后的结果; 如果二叉树中的元素是基本类型int、short等,可以直接操作; 如果元素是对象,那么该对象的类必须重载运算符><==,因为搜索二叉树就是通过这些运算符来排序的; 搜索二叉树里面不允许有重复元素; 2.搜索二叉树的操作 1)新增元素 例如:在上图的搜索二叉树中新增节点8 比较8和15,因为8<15,所以应该放左子树,如果左子树的节点没值就直接写到这里,有值就要继续比较; 比较8和5,8>5,放右子树; 8<12,放左边; 8<10,放左边; 8>6,放右边; 8>7,放右边,7的右子树是空的,因此8放这里; 因此8应该放在以7为父节点的右子树中; 例如:新增18 经过一系列查找,树中原本有一个18; 因为搜索二叉树中不允许重复元素,因此直接返回; 2)查找元素 例如:从上面图的二叉树中找6 6<15,从左找; 6>5,往右找; 6<12,往左找; 6<10,往左找,然后找到了;