劍指Offer 四 重建二叉樹

2021-09-28 13:27:01 字數 750 閱讀 9970

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

# -*- 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):if

not pre or

not tin:

return

none

root = treenode(pre[0]

) ind = tin.index(pre[0]

) root.left = self.reconstructbinarytree(pre[

1:ind+1]

,tin[

0,ind]

) root.right = self.reconstructbinarytree(pre[ind+1:

],tin[ind+1:

]return root

劍指offer(四) 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。我們先來弄懂前序遍歷和中序遍歷的特點 前序遍歷 根結點 左子樹 右子樹。中序遍歷 左子樹 根結點 右子樹。所以前序遍歷序列的第乙個值...

劍指Offer 四 重建二叉樹

解法1 前序遍歷的第乙個數為樹的根,而中序遍歷中根所在位置的左面的序列即為左子樹的中序遍歷,右面即為右子樹的中序遍歷,遞迴找到每個子樹的根就ok了!class solution 返回構造的treenode根節點 def reconstructbinarytree self,pre,tin write...

劍指offer(四) 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。題解 已知前序遍歷和中序遍歷求二叉樹。我們需要找到前序遍歷陣列pre和中序遍歷陣列in確定二叉樹的規律。根據前序遍歷的性質...