从中序与后序遍历序列构造二叉树-中等
难度:中等
题目描述:
根据一棵树的中序遍历与后序遍历构造二叉树。
注意:
你可以假设树中没有重复的元素。
示例:
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]
3
/ \
9 20
/ \
15 7
1
2
3
4
5
6
7
2
3
4
5
6
7
解题思路:
var buildTree = function (inorder, postorder) {
if (postorder.length === 0) return null;
let len = postorder.length - 1;
let root = new TreeNode(postorder[len]);
let index = inorder.indexOf(postorder[len]);
root.left = buildTree(inorder.slice(0, index), postorder.slice(0, index));
root.right = buildTree(inorder.slice(index + 1), postorder.slice(index, len));
return root;
};
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9