SOURCE

class Node {
    constructor(data) {
        this.data = data;
        this.left = null;
        this.right = null;
    }
}

class BinaryTree {
    constructor() {
        this.root = null;
    }
    insert(data) {
        const newNode = new Node(data);
        if(this.root === null) {
            this.root = newNode;
        } else {
            this.insertNode(this.root,newNode)
        }
    }
    insertNode(node, newNode) {
        if(newNode.data < node.data) {
            if(node.left === null) {
                node.left = newNode
            } else {
                this.insertNode(node.left,newNode)
            }
        } else {
            if(node.right === null) {
                node.right = newNode;
            } else {
                this.insertNode(node.right,newNode);
            }
        }
    }
    preOrderTraversal(node) {
        if(node !== null) {
            console.log(node.data);
            this.preOrderTraversal(node.left);
            this.preOrderTraversal(node.right)
        }
    }
    inOrderTraversal(node) {
        if(node !== null) {
            this.inOrderTraversal(node.left);
            console.log(node.data);
            this.inOrderTraversal(node.right)
        }
    }
    postOrderTraversal(node) {
        if(node !== null) {
            this.postOrderTraversal(node.left);
            this.postOrderTraversal(node.right);
            console.log(node.data)
        }
    }
    search(data) {
        return this.searchNode(this.root,data)
    }
    searchNode(node,data) {
        if(node === null) return null;
        if(data<node.data) {
            return this.searchNode(node.left,data)
        } else if (data>node.data) {
            return this.searchNode(node.right,data)
        } else {
            return node;
        }
    }
}

const tree = new BinaryTree();

tree.insert(15);
tree.insert(25);
tree.insert(10);
tree.insert(5);
tree.insert(20);
tree.insert(30)

//前序遍历
console.log("Pre-order Traversal:");
tree.preOrderTraversal(tree.root)

//中序遍历
console.log("In-order Traversal:");
tree.inOrderTraversal(tree.root);

//后序遍历
console.log("Post-order Traversal");
tree.postOrderTraversal(tree.root);

//查找节点
const node = tree.search(25);
console.log(node ? node.data : 'Not found')
console 命令行工具 X clear

                    
>
console