二叉排序树

二叉排序树是以关键码为结点的二叉树,并且具有以下性质
1、如果任一结点的左子树非空,则左子树中的所有结点的关键码都小于根结点的关键码。
2、如果任一结点的右子树非空,则右子树中的所有结点的关键码都大于根结点的关键码。
想要实现二叉排序树的增删改查,首先我们想到的就是二叉排序树的构造,下面让我们一起构造一棵二叉排序树吧!
下面是具体的思路过程以及代码的实现:
给定了一个数据集合{5, 1, 8, 3, 4, 2, 6, 7, 9, 0},根据二叉排序树的定义可知,依次遍历所给的数据集合,得到的数据集合中的数据与二叉排序树的各层节点比较,如果大于当时的节点,则找到该节点的左子树,如果小于当时的节点,则找到该节点的左子树,如果当时的左结点或右结点不存在,则新生成一个结点,并把值赋给该结点。
代码实现如下:

public static void main(String[] args){
    int array[] = {5,1,8,3,4,2,6,7,9,0};
    Tree tree = new Tree();
    for(int i = 0; i < array.length; ++i){
        insert(tree, array[i]);
    }
}

   public static void insert(Tree tree, int value) {
       // 这里比较-1是因为定义的Tree实体类中构造函数初始化了value值
        if (-1 == tree.getValue()) {
            tree.setValue(value);
        } else {
            if (tree.getValue() > value) {
                if (null == tree.getLeftNode()) {
                    tree.setLeftNode(new Tree());
                    tree.getLeftNode().setValue(value);
                } else {
                    insert(tree.getLeftNode(), value);
                }
            } else {
                if (null == tree.getRightNode()) {
                    tree.setRightNode(new Tree());
                    tree.getRightNode().setValue(value);
                } else {
                    insert(tree.getRightNode(), value);
                }
            }
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章