二分搜索树(Binary search tree):满足任何节点的键值大于等于该节点左子树中的所有键值,小于等于该节点右子树中的所有键值的树。(如下图)
(使用Java实现二分搜索树,由于该数据结构的特点所以要求存入的元素必须可以比较,这里通过继承Comparable类来实现)
二分搜索树是一种二叉树,而二叉树天生就具有递归性所以一下代码都用递归的方式。
一、添加操作(add)
方法1:
(public方法供外界调用)
(私有递归算法供本身调用)
方法2:算法思想和方法1不同,方法2 是返回插入的新节点后的二分搜索树的根节点
例如要插入 {5,3,4,6,8,2} 这几个数字
首先插入5 root = 5 => 然后插入3 root =>3 以此类推再进过比较最后得到
5
/ \
3 6
/ \ \
2 4 8