劍指offer:04 重建二叉樹

題目描述

輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請(qǐng)重建出該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。

基本思想

前序遍歷:根節(jié)點(diǎn)->左子樹->右子樹
中序遍歷:左子樹->根節(jié)點(diǎn)->右子樹
后序遍歷:左子樹->右子樹->根節(jié)點(diǎn)

按照遍歷規(guī)則,前序遍歷序列的第一個(gè)節(jié)點(diǎn){1}一定是根節(jié)點(diǎn),它將中序遍歷序列分為了左子樹上的節(jié)點(diǎn){4,7,2}和右子樹上的節(jié)點(diǎn){5,3,8,6}。再分析子樹{4,7,2},它在中序遍歷里的順序{2,4,7},說明根節(jié)點(diǎn)是{2},左子樹{4,7},右子樹為空。再分析子樹{4,7},它在中序遍歷里的順序?yàn)閧4,7},說明根節(jié)點(diǎn)是{4},左子樹為空,右子樹為{7},……,以此類推。

Python

# -*- coding:utf-8 -*-

# class TreeNode:

#? ? def __init__(self, x):

#? ? ? ? self.val = x

#? ? ? ? self.left = None

#? ? ? ? self.right = None

class Solution:

? ? # 返回構(gòu)造的TreeNode根節(jié)點(diǎn)

? ? def reConstructBinaryTree(self, pre, tin):

? ? ? ? # write code here

? ? ? ? if not pre or not tin:

? ? ? ? ? ? return None

? ? ? ? root? = TreeNode(pre[0]) #1 2 4 7 3 5 6 8

? ? ? ? index = tin.index(pre[0])

? ? ? ? root.left = self.reConstructBinaryTree( pre[1:index+1] , tin[:index])

? ? ? ? root.right = self.reConstructBinaryTree( pre[index+1:] , tin[index+1:])

? ? ? ? return root

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述: · 輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請(qǐng)重建出該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不...
    FloatingIsland閱讀 105評(píng)論 0 0
  • 題目:輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請(qǐng)重建出該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)...
    yui_blacks閱讀 55評(píng)論 0 0
  • 什么是二叉樹? 在計(jì)算機(jī)科學(xué)中,二叉樹是每個(gè)節(jié)點(diǎn)最多有兩個(gè)子樹的樹結(jié)構(gòu)。通常子樹被稱作“左子樹”和“右子樹”,左子...
    小貓仔閱讀 637評(píng)論 0 0
  • 樹的定義與基本術(shù)語 ??樹型結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu),其中以樹和二叉樹最為常用,是以分支關(guān)系定義的層次結(jié)構(gòu)。...
    java技術(shù)分享師閱讀 1,215評(píng)論 0 1
  • 輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請(qǐng)重建出該二叉樹。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字。例...
    亮濤閱讀 268評(píng)論 0 0

友情鏈接更多精彩內(nèi)容