題目描述:
python二維列表查找元素位置?輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。
CODE:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回構造的TreeNode根節點
def reConstructBinaryTree(self, pre, tin):
# write code here
if len(pre) == 0: # 每次遞歸時,pre都會更新,當pre為0時,說明該節點下面為空。
return None
root = TreeNode(pre[0]) # 先使用每次更新的先序列表的第一個結點來創建新的結點
pos = tin.index(pre[0]) # 使用先序的第一個結點到中序 序列中找到索引位置,因為中序的這個索引位置可以將先序序列劃分為左右子樹
root.left = self.reConstructBinaryTree(pre[1:pos+1], tin[:pos]) # 將先序和中序的序列劃分后繼續進行父節點的左子樹的遞歸。
root.right = self.reConstructBinaryTree(pre[pos+1:],tin[pos+1:]) # 同上。
return root
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态