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. 根據前序和後序遍歷構造二叉樹二叉樹
- 【根據前序和中序遍歷構造二叉樹】棧+迭代 || 遞迴二叉樹遞迴
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- LintCode 前序遍歷和中序遍歷樹構造二叉樹二叉樹
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- 演算法根據樹的前序遍歷構建二叉樹演算法二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- [資料結構] 根據前中後序遍歷中的兩種構造二叉樹資料結構二叉樹
- Construct Binary Tree from Preorder and Inorder Traversal(前序遍歷和中序遍歷樹構造二叉樹)...Struct二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode-105-從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- 刷題系列 - 給出前序和後序遍歷佇列,構造對應二叉樹佇列二叉樹
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 資料結構與演算法——二叉樹的前序遍歷,中序遍歷,後序遍歷資料結構演算法二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- C4top-玩轉二叉樹(根據前序中序映象反轉後層次遍歷)二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹 | PytLeetCode二叉樹
- (樹)根據中序後序構建二叉樹二叉樹
- 388,先序遍歷構造二叉樹二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 二叉樹迭代器(中序遞迴、前序和後序遍歷)演算法二叉樹遞迴演算法
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 中序線索二叉樹的構造和遍歷二叉樹
- LeetCode-106-從中序與後序遍歷序列構造二叉樹LeetCode二叉樹
- 二叉樹--後序遍歷二叉樹
- 刷題系列 - 中序和後序遍歷佇列,構造對應二叉樹;佇列二叉樹
- 【資料結構與演算法】二叉樹的 Morris 遍歷(前序、中序、後序)資料結構演算法二叉樹
- 144. 二叉樹的遍歷「前序、中序、後序」 Golang實現二叉樹Golang
- 從前序與中序構造二叉樹二叉樹
- 刷題筆記:樹的前序、中序、後序遍歷筆記
- 二叉樹中序和後序遍歷表示式二叉樹
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法
- 二叉樹前序、中序、後序遍歷相互求法(code留著看,概念先看了)二叉樹
- 二叉樹 前序、中序、後序二叉樹