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; } } } } }