js二分查找樹實現

二叉查找數由節點組成,咱們要定義的第一個對象就是node,該對象和前面介紹鏈表時的對象相似,node類的定義以下
function Node(data,left,right){
    this.data = data;
    this.left = left;
    this.right = right;
    this.show = show

}

function show(){
   return this.data;
}

如今建立一個類,用來表示二叉樹(BST) 。咱們讓類只包含一個數據成員:一個表示二叉樹查找樹節點的node對象。該類的構造函數將跟節點初始化爲 null,以此建立一個空節點。node

1.BST首先有一個insert() 方法用來像數組中加入新節點。數組

2.檢查BST是否有根節點,若是沒有,那麼這是課新樹,該節點就是跟節點函數

3.若是插入的節點不是根節點,那麼就須要準備遍歷BST,找到插入的適當位置,該過程相似遍歷鏈表。用一個變量存儲當前節點,一層一層地遍歷BSTthis

進入BST之後,下一步就是決定將節點放在哪一個地方。找到正確的插入點時,會跳出循環spa

(1)設根節點爲當前節點code

(2)若是待插入節點保存的數據小於當前節點,則設新的當前節點爲原節點的左節點對象

(3)若是當前節點的左節點爲null,就將新的節點插入這個位置,退出循環,反之,繼續執行下一循環blog

(4)設新的當前節點爲原節點的右節點io

(5)若是執行當前節點的右節點爲null,就將新的節點插入這個位置,退出循環,反之,繼續執行下一次循環function

function BST(){
    this.root = null;
    this.insert = insert;
    this.inOrder = inOrder;
}

function insert(data){
    var n = new Node(data,null,null)
    if(this.root == null){
        this.root = n
    }else {
        var current = this.root;
        var parent 
        while(true){
            parent = current;
            if(data < current.data){
                current = current.left
                if(current == null){
                    parent.left = n
                    break;
                }
            } else{
                current = current.right;
                if(current == null){
                    parent.right = n;
                    break;
                }
            }
        }

    }
}
相關文章
相關標籤/搜索