劍指offer——04重建二叉樹(Python3)

思路:在數據結構中,有一個條件反射,談及二叉樹,就遞歸。因此在實現重建二叉樹時,也應該用到遞歸的思想。數據結構

在前序遍歷中,根節點處於第一個;在中序遍歷中,根節點的左邊爲左子樹節點,根節點右邊爲右子樹節點。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
相關文章
相關標籤/搜索