Leetcode 889. 根據前序和後序遍歷構造二叉樹
返回與給定的前序和後序遍歷匹配的任何二叉樹。
pre
和 post
遍歷中的值是不同的正整數。
輸入:pre = [1,2,4,5,3,6,7], post = [4,5,2,6,7,3,1]
輸出:[1,2,3,4,5,6,7]
提示:
1 <= pre.length == post.length <= 30
pre[]
和post[]
都是1, 2, ..., pre.length
的排列- 每個輸入保證至少有一個答案。如果有多個答案,可以返回其中一個。
前序遍歷的第一個元素,後續遍歷的最後一個元素,是根節點;
從前序看 2 是左樹的根節點,我們需要知道左樹的長度,我們從後續找到2的位置,4,5,2 是整個左樹。
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def constructFromPrePost(self, pre, post):
"""
:type pre: List[int]
:type post: List[int]
:rtype: TreeNode
"""
tree_root = TreeNode(pre[0])
pre = pre[1:]
post = post[:-1]
len_left = 0
for i in post:
if i == pre[0]:
len_left += 1
break
else:
len_left += 1
# print(pre, post)
# print(len_left, pre[:len_left], pre[len_left:])
if len_left >= 1:
tree_root.left = self.constructFromPrePost(
pre[:len_left], post[:len_left])
if len(pre) - len_left >= 1:
tree_root.right = self.constructFromPrePost(
pre[len_left:], post[len_left:])
return tree_root
print(Solution().constructFromPrePost(
pre=[1, 2, 4, 5, 3, 6, 7],
post=[4, 5, 2, 6, 7, 3, 1]))
相關文章
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 【根據前序和中序遍歷構造二叉樹】棧+迭代 || 遞迴二叉樹遞迴
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode-105-從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹 | PytLeetCode二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- [資料結構] 根據前中後序遍歷中的兩種構造二叉樹資料結構二叉樹
- 刷題系列 - 給出前序和後序遍歷佇列,構造對應二叉樹佇列二叉樹
- LeetCode-106-從中序與後序遍歷序列構造二叉樹LeetCode二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- 388,先序遍歷構造二叉樹二叉樹
- Leetcode——144. 二叉樹的前序遍歷LeetCode二叉樹
- 二叉樹迭代器(中序遞迴、前序和後序遍歷)演算法二叉樹遞迴演算法
- 144. 二叉樹的遍歷「前序、中序、後序」 Golang實現二叉樹Golang
- 中序線索二叉樹的構造和遍歷二叉樹
- LeetCode題144. 二叉樹的前序遍歷LeetCode二叉樹
- 刷題系列 - 中序和後序遍歷佇列,構造對應二叉樹;佇列二叉樹
- 【資料結構與演算法】二叉樹的 Morris 遍歷(前序、中序、後序)資料結構演算法二叉樹
- 二叉樹--後序遍歷二叉樹
- 刷題筆記:樹的前序、中序、後序遍歷筆記
- 從前序與中序構造二叉樹二叉樹
- 7-1 根據後序和中序遍歷輸出先序遍歷 (25 分)
- 二叉樹中序和後序遍歷表示式二叉樹
- 程式碼隨想錄演算法訓練營day14 | leetcode 144. 二叉樹的前序遍歷、145. 二叉樹的後序遍歷、94. 二叉樹的中序遍歷演算法LeetCode二叉樹
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法
- L2_006樹的遍歷(後序+中序->前序/層序)
- 144. 二叉樹的前序遍歷(java實現)--LeetCode二叉樹JavaLeetCode
- 106. 從中序與後序遍歷序列構造二叉樹——Java實現二叉樹Java
- PAT 1043 Is It a Binary Search Tree (25分) 由前序遍歷得到二叉搜尋樹的後序遍歷
- 線索二叉樹的構造和遍歷二叉樹
- 144. 二叉樹的前序遍歷二叉樹