ZhengXingchi / ZhengXingchi.github.io

Apache License 2.0
0 stars 0 forks source link

剑指offer(4)重建二叉树 #61

Open ZhengXingchi opened 4 years ago

ZhengXingchi commented 4 years ago

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回

ZhengXingchi commented 4 years ago
function rebuild(pre, vim) {
      if (pre.length === 0 || vim.length === 0) {
        return null
      }
      let gen = pre[0]
      let index = vim.indexOf(gen)
      let left = vim.slice(0, index)
      let right = vim.slice(index + 1)
      return {
        value: gen,
        left: rebuild(pre.slice(1, index + 1), left),
        right: rebuild(pre.slice(index + 1), right)
      }
    }
 console.log(rebuild([1, 2, 4, 7, 3, 5, 6, 8], [4, 7, 2, 1, 5, 3, 8, 6]))