二叉排序樹

二叉排序樹是以關鍵碼爲結點的二叉樹,並且具有以下性質
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);
                }
            }
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章