二叉树遍历 js版

二叉树的遍历。和怎么得到结果的,开始不太好理解,后来发现一个简单方法,供参考,水平有限,有问题,请指正。
如图
如以上二叉树, 前序遍历 (D L R) ,中序遍历 (L D R),后序遍历 (LRD),代码如下

 // 树的表示 
  const tree = {
    val: 1,
    left: {
      val: 2,
      left: { val: 4 },
      right: {val: 5}
    },
    right: {
      val: 3
    }
  };
  
  function DLR(node) {
    if (node) {
      console.log(node.val)
      DLR(node.left)
      DLR(node.right)
    }
  }

  function LDR(node) {
    if (node) {
      LDR(node.left)
      console.log(node.val)
      LDR(node.right)
    }
  }

  function LRD(node) {
    if (node) {
      LRD(node.left)
      LRD(node.right)
      console.log(node.val)
    }
  }
  

理解, 怎么简单去理解,得到结果呢?

  1. 比如 前序是 根 -> 左 -> 右
  2. 以上二叉树 123 的顺序就是 1->2->3
  3. 在245的树,顺序是 2->4->5
  4. 组合以上结果 2->4->5 替换 1->2->3 中的2
  5. 得到结果 1->2->4->5->3
发布了40 篇原创文章 · 获赞 12 · 访问量 860

猜你喜欢

转载自blog.csdn.net/qq_29334605/article/details/104311541