889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal

889. Construct Binary Tree from Preorder and Postorder Traversal

题目地址

https://leetcode.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/

题目描述

Return any binary tree that matches the given preorder and postorder traversals.

Values in the traversals pre and post are distinct positive integers.

Example 1:
Input: pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]
Output: [1,2,3,4,5,6,7]

Note:
1 <= pre.length == post.length <= 30
pre[] and post[] are both permutations of 1, 2, ..., pre.length.
It is guaranteed an answer exists. If there exists multiple answers, you can return any of them.

代码

Approach #1 Recursion

Time: O(N^2) && Space: O(N^2)

Approach #2

Create a node TreeNode(pre[preIndex]) as the root.

Becasue root node will be lastly iterated in post order, if root.val == post[posIndex], it means we have constructed the whole tree,

If we haven't completed constructed the whole tree, So we recursively constructFromPrePost for left sub tree and right sub tree.

And finally, we'll reach the posIndex that root.val == post[posIndex]. We increment posIndex and return our root node.

Approach #3 Iterative

O(N)

Last updated

Was this helpful?