二叉树

83 阅读1分钟

function BinaryTree() {
  const Node = function (key) {
    this.key = key;
    this.left = null;
    this.right = null;
  };

  this.root = null;
  const insertNode = function (node, newNode) {
    if (node.key > newNode.key) {
      if (node.left == null) {
        node.left = newNode;
      } else {
        insertNode(node.left, newNode);
      }
    } else {
      if (node.right === null) {
        node.right = newNode;
      } else {
        insertNode(node.right, newNode);
      }
    }
  };
  this.insert = function (key) {
    let newNode = new Node(key);
    if (this.root === null) {
      this.root = newNode;
    } else {
      insertNode(this.root, newNode);
    }
  };

  const inOrderTraverseNode = function (node, callback) {
    if (node !== null) {
      inOrderTraverseNode(node.left, callback);
      callback(node.key);
      inOrderTraverseNode(node.right, callback);
    }
  }

  this.inOrderTraverse = function (callback) {
    inOrderTraverseNode(this.root, callback);
  }
}

const binaryTree = new BinaryTree();
const nodes = [8, 3, 10, 1, 6, 14, 4, 7, 13];
nodes.forEach((val) => {
  binaryTree.insert(val);
});

const callback = (key) => {
  console.log(key)
}

binaryTree.inOrderTraverse(callback);