美文网首页
二叉树工具类

二叉树工具类

作者: Spidd | 来源:发表于2022-11-16 15:04 被阅读0次
class TreeNode {
  constructor(value) {
    this.value = value; //数据域
    this.left = null; //左孩子
    this.right = null; //右孩子
  }
}

// 二叉树工具类
class BinaryTree {
  constructor() {}
  // 数组严格表示法
  static createTreeNode(arr, index) {
    if (index > arr.length) {
      return null;
    }
    if (arr[index] == null) {
      return null;
    }
    const node = new TreeNode(arr[index]);
    node.left = BinaryTree.createTreeNode(arr, index * 2 + 1);
    node.right = BinaryTree.createTreeNode(arr, index * 2 + 2);
    return node;
  }

  // 数组优化表示法
  static arrayToTree(arr) {
    if (arr.length === 0) {
      return null;
    }
    const root = new TreeNode(arr[0]);
    //是否是左孩子节点
    let isLChild = true;
    //用数组的push和shift模拟队列
    const queue = [];
    queue.push(root);

    //从第二个节点开始遍历
    for (let i = 1; i < arr.length; i++) {
      //从队列中取出第一个元素
      const node = queue[0];
      if (isLChild) {
        if (arr[i] != null) {
          node.left = new TreeNode(arr[i]);
          //把 left 节点插入队列
          queue.push(node.left);
        }
        // left 完毕,开始处理 right
        isLChild = false;
      } else {
        if (arr[i] != null) {
          node.right = new TreeNode(arr[i]);
          //把 right 节点插入队列
          queue.push(node.right);
        }
        //right处理完毕,开始出队列
        queue.shift();
        isLChild = true;
      }
    }
    return root;
  }
}

相关文章

  • 构建二叉树

    打印二叉树的工具类,参考:打印二叉树[https://www.jianshu.com/p/2e6ec64d152d...

  • 二叉树工具类

  • 树、图的构造与遍历和图的最小生成树

    1.二叉树 1.1 二叉树类的实现 首先构造节点类,它的属性包括元素、左孩子、右孩子。然后构造二叉树类,它的属性有...

  • 二叉树实现排序列表

    使用Java实现的二叉树排序列表 二叉树实现类 实体类 测试类 输出结果 [Person{name='李四', a...

  • SocketIO的使用

    SocketIO的工具类 RunSubject工具类 SubjectRun工具类 ObserverRun工具类 R...

  • 工具类

    系统工具类 snackbar工具类 xml解析工具类

  • Javascript通用工具类

    Json工具类,处理所有Json相关的通用方法。 数字计算工具类 颜色工具类 日期工具类 字符串工具类

  • 二叉树总结(Python)

    一、创建 二叉树结点类的定义: 使用结点类可以直接创建一颗小型的二叉树做测试用: 1、从列表创建一颗二叉树 假设列...

  • 剑指offer小结第二波

    二叉树专题系列 1. 镜像类 题目描述: 操作给定的二叉树,将其变换为源二叉树的镜像。 Ying的解法: 二叉树的...

  • 加解密+签名验签

    RSA工具类 RSA工具类-测试

网友评论

      本文标题:二叉树工具类

      本文链接:https://www.haomeiwen.com/subject/litexdtx.html