輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
先序遍歷和中序遍歷的節點對應關係,先序遍歷的第乙個值是根節點的值。在中序遍歷中,根節點左邊的值是左子樹,右邊的值是右子樹上的值。然後使用遞迴返回原始二叉樹。
# -*- coding:utf-8 -*-
class
treenode
:def
__init__
(self, x)
: self.val = x
self.left =
none
self.right =
none
class
solution
:# 返回構造的treenode根節點
defreconstructbinarytree
(self, pre, tin)
:# write code here
ifnot pre:
return
none
root = treenode(pre[0]
) n = tin.index(root.val)
# 找到根節點在中序遍歷中的下標
root.left = self.reconstructbinarytree(pre[
1:n+1]
, tin[
:n])
root.right = self.reconstructbinarytree(pre[n+1:
], tin[n+1:
])return root
4 重建二叉樹
測試通過 時間限制 1秒 空間限制 32768k 題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。時間限制 1秒空間限制 32768k 本題知識點 查詢 牛客網陣列題目鏈...
4 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。例如前序遍歷序列和中序遍歷序列為和,假設結果中無重複的數字。重建二叉樹並返回 1 前序遍歷二叉樹的形式為 根節點,左子樹,右子樹 中序遍歷二叉樹的形式為 左子樹,根節點,右子樹 因此我們需要把前序遍歷的第乙個結果new乙個treenode 出來...
4 重建二叉樹
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。先序序列第乙個數就是根結點而後是左子樹的先序序列和右子樹的先序序列,而中序序列是先是左子樹的中序序列,然後是根結點,最後是右子樹的中...