106. 從中序與後序遍歷序列構造二叉樹(JS實現)

1 題目

根據一棵樹的中序遍歷與後序遍歷構造二叉樹。
注意:
你可以假設樹中沒有重複的元素。
例如,給出
中序遍歷 inorder = [9,3,15,20,7]
後序遍歷 postorder = [9,15,7,20,3]
返回如下的二叉樹:
3
/
9 20
/
15 7

2 思路

這道題的主要思路跟從中序和前序序列構造二叉樹,只不過前序換成了後序,我們就需要先構造右子樹,再構造左子樹

3代碼

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {number[]} inorder
 * @param {number[]} postorder
 * @return {TreeNode}
 */
var buildTree = function(inorder, postorder) {
function d(pArr, inArr, begin, end) {
    if (begin > end) return null;

    let nodeValuie = pArr.pop();
    let index = inArr.indexOf(nodeValuie);
    let node = new TreeNode(nodeValuie);

    node.right = d(pArr, inArr, index + 1, end);
    node.left = d(pArr, inArr, begin, index - 1);

    return node;
  }

  return d(postorder, inorder, 0, inorder.length - 1);


  function TreeNode(val) {
    this.val = val;
    this.left = this.right = null;
  }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章