思路:在數據結構中,有一個條件反射,談及二叉樹,就遞歸。因此在實現重建二叉樹時,也應該用到遞歸的思想。數據結構
在前序遍歷中,根節點處於第一個;在中序遍歷中,根節點的左邊爲左子樹節點,根節點右邊爲右子樹節點。spa
根據性質構造根節點。code
一、取出前序遍歷的第一個節點做爲根節點blog
二、在中序遍歷中按照根節點分割左子樹和右子樹遞歸
三、遞歸it
代碼:io
class
Solution:
# 返回構造的TreeNode根節點
def
reConstructBinaryTree(
self
, pre, tin):
# write code here
if
len
(pre)
=
=
0
:
return
None
if
len
(pre)
=
=
1
:
return
TreeNode(pre[
0
])
else
:
flag
=
TreeNode(pre[
0
])
flag.left
=
self
.reConstructBinaryTree(pre[
1
:tin.index(pre[
0
])
+
1
],tin[:tin.index(pre[
0
])])
flag.right
=
self
.reConstructBinaryTree(pre[tin.index(pre[
0
])
+
1
:],tin[tin.index(pre[
0
])
+
1
:] )
return
flag