1. 程式人生 > >已知中序、後序構造二叉樹(關鍵詞:二叉樹/前序/先序/中序/後序/先根/中根/後根/遍歷/搜尋/查詢)

已知中序、後序構造二叉樹(關鍵詞:二叉樹/前序/先序/中序/後序/先根/中根/後根/遍歷/搜尋/查詢)

已知中序、後序構造二叉樹

遞迴演算法

    def buildTree(inorder, postorder):
        if inorder and postorder:
            
            postRootVal = postorder.pop()
            inRootIdx = inorder.index(postRootVal)
            
            root = TreeNode(postRootVal)
            
            """ 解釋:
            當從 postorder 中 pop 時,首先會命中 right child ,
            所以,在構造樹時,需要先設定 right ,再設定 left 。
            """
            root.right = self.buildTree(inorder[inRootIdx+1:], postorder)
            root.left = self.buildTree(inorder[:inRootIdx], postorder)
            
            return root

參考文獻

  1. 106. Construct Binary Tree from Inorder and Postorder - LeetCode
  2. 這是印象筆記中的筆記,如果是在CSDN手機APP上檢視此部落格,請在印象筆記手機APP中搜索該參考文獻:https://app.yinxiang.com/shard/s44/nl/9329661/e2a2758d-7c33-4fbd-99e0-74ff56457b82。