数据结构与算法javascript描述(三) 二叉查找树 先序,中序,后续遍历

/* 实现二叉查找树 Node类 BST类 */

function Node(){
    this.data = data;
    this.left = left;
    this.right = right;
    this.show = show;
}
function show(){
    return this.data;
}
function BST(){
    this.root = null;
    this.insert = insert;
    this.inOrder = inOrder; //中序
    this.postOrder = postOrder;
    this.preOrder = preOrder;

}
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;
        while(data < current.data){
            current = current.left;
            if(current ==null){
                parent.left = n;
                break;
            }
        }

             else{
                current = current.right;
                if(current ==null){
                    parent.right = n;
                    break;
                }   
            }
         }
     }
}

  function inOder(node){
    if(!(node ==null)){
        inOder(node.left);
        putstr(node.show() + " ");
        inOrder(node.right);
    }
  }

//先序
function preOrder(node) {
if (!(node == null)) {
    putstr(node.show() + " ");
    preOrder(node.left);
    preOrder(node.right);
    }
}
//后序
function postOrder(node) {
    if (!(node == null)) {
    postOrder(node.left);
    postOrder(node.right);
    putstr(node.show() + " ");
    }
}

测试

var nums = new BST();
nums.insert(23);
nums.insert(45);
nums.insert(16);
nums.insert(37);
nums.insert(3);
nums.insert(99);
nums.insert(22);
console.log("Inorder traversal: ");
inOrder(nums.root);
console.log("preOrder traversal: ");
preOrder(nums.root);
console.log("Postorder traversal: ");
postOrder(nums.root);

你可能感兴趣的:(JavaScript,数据结构,算法,二叉查找树)