JS 二叉排序树

 class Tree {
            constructor() { //初始树
                this.root = null;
                this.result_array = [];
            }
            Node(val) {
                return {
                    left: null,
                    right: null,
                    val: val
                }
            }
            insertNode(node, new_node) {
                if (new_node.val < node.val) {
                    if (!node.left) {
                        node.left = new_node;
                    } else {
                        this.insertNode(node.left, new_node);
                    }
                } else { // 新节点的权值不小于原节点则递归插入右孩子
                    if (!node.right) {
                        node.right = new_node;
                    } else {
                        this.insertNode(node.right, new_node);
                    }
                }
            }
            insert(val, node) {
                let new_node = this.Node(val, node);
                if (!this.root) {
                    this.root = new_node;
                } else {
                    this.insertNode(this.root, new_node)
                }
            };
            midShow(node) {
                if (node != null) {
                    this.midShow(node.left);
                    // 再遍历父节点
                    this.result_array.push(node.val);
                    // 后遍历右孩子
                    this.midShow(node.right);
                }
            }
            findVal(node, val) {
                if (val === node.val) return true
                else if (val > node.val) return this.findVal(node.right, val)
                else if (val < node, val) return this.findVal(node.left, val)
                else return false
            }
        }
        let tree = new Tree();
        let a = [123, 45, 456, -89, 68, 5, 235, -78];
        a.forEach(item => {  
            tree.insert(item);
        });
        tree.midShow(tree.root)
        console.log(tree.result_array);
        let res = tree.findVal(tree.root, 456)
        console.log(res);

  

posted @ 2021-03-07 16:16  Jiox  阅读(42)  评论(0)    收藏  举报