构建二叉树 前序 中序 后序 递归方法

发布于 2022-03-07 13:13:03 字数 1999 浏览 829 评论 0

// 节点
function Node(element, left, right, parent) {
  this.element = element;
  this.left = left;
  this.right = right;
  this.parent = parent;
  this.show = function () {
    return this.element;
  }
}
// 二叉树
function BST() {
  this.root = null;
  // 插入节点
  this.insert = function (element) {
    let node = new Node(element, null, null);
    if (this.root === null) {
      this.root = node;
    } else {
      let buffer = this.root;
      while (true) {
        // 左节点
        if (node.element < buffer.element) {
          if (buffer.left === null) {
            buffer.left = node;
            node.parent = buffer;
            break;
          } else {
            buffer = buffer.left;
          }
        } else { //右节点
          if (buffer.right === null) {
            buffer.right = node;
            node.parent = buffer;
            break;
          } else {
            buffer = buffer.right;
          }
        }
      }
    }
  }
  // 前序遍历
  this.preOrderTraverse = function (node) {
    if (node === null) return;
    console.log('前序遍历' + node.show());
    this.preOrderTraversal(node.left);
    this.preOrderTraversal(node.right);
  }

  // 中序遍历
  this.inOrderTraverse = function (node) {
    if (node === null) return;
    this.centerOrderTravarsal(node.left);
    console.log('中序遍历' +
      node.show());
    this.centerOrderTravarsal(node.right);
  }

  // 后序遍历
  this.postOrderTraverse = function (node) {
    if (node === null) return;
    this.afterOrderTravarsal(node.left);
    this.afterOrderTravarsal(node.right);
    console.log('后序遍历' + node.show());
  }
}
let bst = new BST();
let nodes = [20, 13, 42, 7, 15, 9, 14, 22, 21, 6, 24, 57];
nodes.forEach(key => {
  bst.insert(key);
});
bst.preOrderTraverse(bst.root); //20,13,7,9,15,14,42,22,21
bst.inOrderTraverse(bst.root); //6,7,9,13,14,15,20,21,22,24,42,57
bst.postOrderTraverse(bst.root); // 6,9,7,14,15,13,21,24,22,57,42,20

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文