美文网首页
js 二叉树遍历

js 二叉树遍历

作者: RQrry | 来源:发表于2019-08-26 20:11 被阅读0次

L、D、R 分别表示遍历左子树、访问根结点和遍历右子树

二叉树
const obj = {
  value: 1,
  left: {
    value: 2,
    left: {
      value: 4
    },
    right: {
      value: 5
    }
  },
  right: {
    value: 3,
    left: {
      value: 6
    },
    right: {
      value: 7
    }
  }
}

const arr = [];
前序遍历

根 左 右

const DLR = function (obj) {
  arr.push(obj.value);
  if (obj.left) {
    DLR(obj.left);
  }
  if (obj.right) {
    DLR(obj.right);
  }
}

// arr = [ 1, 2, 4, 5, 3, 6, 7 ]
中序遍历

左 根 右

const LDR = function (obj) {
  if (obj.left) {
    LDR(obj.left);
  }
  arr.push(obj.value);
  if (obj.right) {
    LDR(obj.right);
  }
}

// arr = [ 4, 2, 5, 1, 6, 3, 7 ]
后序遍历

左 右 根

const LRD = function (obj) {
  if (obj.left) {
    LRD(obj.left);
  }
  if (obj.right) {
    LRD(obj.right);
  }
  arr.push(obj.value);
}

// arr = [ 4, 5, 2, 6, 7, 3, 1 ]
层次遍历

将根结点放入队列中,打印根结点的 value 值
判断根结点是否有左子树,有则将左子树放入队列中
判断根结点是否有右子树,有则将右子树放入队列中
将根结点出队
循环遍历队列中的结点

const layer = function (obj) {
  const queue = [];
  queue.push(obj);
  while (queue.length) {
    arr.push(queue[0].value);
    if (queue[0].left) {
      queue.push(queue[0].left);
    }
    if (queue[0].right) {
      queue.push(queue[0].right);
    }
    queue.shift();
  }
}

// arr = [ 1, 2, 3, 4, 5, 6, 7 ]

相关文章

  • JS来搞定二叉DOM树的遍历

    js构建一颗二叉树: 前序遍历:首先访问根结点,然后遍历左子树,最后遍历右子树 修改为DOM二叉树: 中序遍历首先...

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 二叉树遍历

    二叉树 二叉树的存储结构 前序遍历 中序遍历 后序遍历 遍历代码 反转二叉树 深入学习二叉树 二叉树-你必须要懂!...

  • leetcode-day13-平衡二叉树[剑指 Offer 55

    今日的题目,我之前文章有写过,前序中序后序都在这篇文章里 js实现二叉树的前序遍历,中序遍历,后续遍历[https...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 关于函数递归和迭代的转化, 及尾递归相关知识的接触和思考

    javascript实现数据结构: 树和二叉树,二叉树的遍历和基本操作 js 二叉树 【数据结构与算法】深入浅出递...

  • 数据结构与算法之二叉树遍历(七)

    目录 前序遍历中序遍历后序遍历层序遍历遍历方式的选择条件根据遍历结果重构二叉树翻转二叉树计算二叉树的高度判断一棵树...

  • 二叉树三种遍历Swift代码实现

    二叉树的三种遍历 二叉树 前序遍历 中序遍历 后序遍历 另外 不得不说,得到二叉树的前序遍历和中序遍历的结果或者后...

  • 二叉树的遍历

    二叉树的遍历 二叉树遍历 分为前序遍历、中序遍历和后序遍历。 前序遍历 (DLR) 先访问根节点,然后前序遍历左子...

网友评论

      本文标题:js 二叉树遍历

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