二叉树

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));

  

转载于:https://www.cnblogs.com/shangyueyue/p/10214209.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值