二叉树

class CreateNode {
  constructor(value) {
    this.node = value;
    this.left = null;
    this.right = null;
  }
}

class Tree {
  constructor() {
    this.root = null;
  }

  traverseNode(treeNode, callback) {
    if (treeNode !== null) {
      this.traverseNode(treeNode.left, callback);
      callback(treeNode.node);
      this.traverseNode(treeNode.right, callback);
    }
  }

  traverse(callback) {
    this.traverseNode(this.root, callback);
  }

  insertNode(curNode, treeNode) {
    if (treeNode.node < curNode.node) {
      if (curNode.left === null) {
        curNode.left = treeNode; // eslint-disable-line
      } else {
        this.insertNode(curNode.left, treeNode);
      }
    } else if (curNode.right === null) {
      curNode.right = treeNode; // eslint-disable-line
    } else {
      this.insertNode(curNode.right, treeNode);
    }
  }

  createTree(value) {
    const treeNode = new CreateNode(value);
    if (this.root == null) {
      this.root = treeNode;
    } else {
      this.insertNode(this.root, treeNode);
    }
  }
}

const tree = new Tree();
const arr = [4, 2, 5, 6, 3, 2, 8, 1, 12, 10];
arr.forEach(val => {
  tree.createTree(val);
});
tree.traverse(key => console.log(key));

  

posted @ 2019-01-03 14:57  shangyueyue  阅读(139)  评论(0编辑  收藏  举报