构造二叉搜索树
定义
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
-
若它的左子树不为空,则左子树上所有节点的值都小于根节点的值
-
若它的右子树不为空,则右子树上所有节点的值都大于根节点的值
-
它的左右子树也分别为二叉搜索树
特性
- 二叉搜索树中最左侧的节点是树中最小的节点,最右侧节点一定是树中最大的节点
- 采用中序遍历遍历二叉搜索树,可以得到一个有序的序列
代码实现
public class BSTree {
//定义Node类
public static class Node{
int val;
Node left;
Node right;
Node(int val){
this.val = val;
this.left = null;
this.right = null;
}
}
//定义根节点
private Node root = null;
//查找
public Node find (int val){
if (root == null){
return null;
}
Node cur = root;
while (cur !=null){
if (cur.val == val){
return cur;
}else if (cur.val > val){
cur = cur.left;
}else{
cur = cur.right;
}
}
return null;
}
// 插入
// 新的节点都是插入在叶子节点或者不完全的子树上
public boolean insert(int val){
if (root == null){
root = new Node