根據前序遍歷和中序遍歷的結果重建二叉樹

2021-10-05 10:37:18 字數 1127 閱讀 3583

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

為便於理解,重建出的二叉樹如下:

python**如下:

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 or

not tin:

return

none

root = treenode(pre.pop(0)

) index = tin.index(root.val)

root.left = self.reconstructbinarytree(pre, tin[

:index]

) root.right = self.reconstructbinarytree(pre, tin[index +1:

])return root

if __name__ ==

'__main__'

: s=solution(

) pre=

list([

1,2,

4,7,

3,5,

6,8]

) tin=[4

,7,2

,1,5

,3,8

,6] res=s.reconstructbinarytree(pre,tin)

print

(res)

根據前序遍歷和中序遍歷得出後序遍歷

首先要明確前序,中序和後序的遍歷順序 前序 父節點,左子節點,右子節點 中序 左子節點,父節點,右子節點 後序 左子節點,右子結點,父節點 明確之後,首先根據前序遍歷,確定整個二叉樹的根節點 前序的第乙個節點 再通過中序遍歷,可以直接根據根節點將整個二叉樹分為左右兩顆子樹.這時再逐步根據前序和中序順...

C 根據 前序 中序遍歷輸出後序遍歷

include include void printt char pred,int pre start,int pre end,char inod,int in start,int in end intmain void printt char pred,int pre start,int pre ...

根據前序遍歷,中序遍歷結果構造二叉樹

前序遍歷的特點 根節點 左子樹 右子樹 中序遍歷的特點 左子樹 根節點 右子樹 例如 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 在前序遍歷結果中可以找到 這棵樹的根 為 3 再去中序中,可以分辨出9為3的左子樹內容,15 20 7為3的右子...