博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重建二叉树 python
阅读量:3932 次
发布时间:2019-05-23

本文共 602 字,大约阅读时间需要 2 分钟。

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 

思路:1、从前序遍历中找到根节点,并找到根节点在中序遍历的下标i 
2、按照i的值分割前序和中序 
3、递归1~2

# -*- 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 not pre or not tin: 
return None 
root = TreeNode(pre[0]) 
i = tin.index(pre[0]) 
root.left = self.reConstructBinaryTree(pre[1:i+1], tin[:i]) 
root.right = self.reConstructBinaryTree(pre[i+1:], tin[i+1:]) 
return root 

转载地址:http://kftgn.baihongyu.com/

你可能感兴趣的文章
LeetCode刷题:26. Remove Duplicates from Sorted Array
查看>>
LeetCode刷题:682. Baseball Game
查看>>
LeetCode刷题:902. Numbers At Most N Given Digit Set
查看>>
LeetCode刷题:132. Palindrome Partitioning II (JAVA算法实现)
查看>>
LeetCode刷题:546. Remove Boxes —JAVA代码DP+DFS
查看>>
LeetCode刷题:925. Long Pressed Name
查看>>
LeetCode刷题:76. Minimum Window Substring (JAVA 算法实现)
查看>>
LeetCode刷题:71. Simplify Path
查看>>
LeetCode刷题:30. Substring with Concatenation of All Words
查看>>
JAVA算法:递归求解母牛问题(JAVA代码)
查看>>
JAVA算法:欧几里德算法(GCD)又称辗转相除法计算两个整数a,b的最大公约数(JAVA代码)
查看>>
JAVA算法:李白遇花喝酒游戏JAVA DFS 算法设计
查看>>
JAVA算法:括号配对问题与卡塔兰数(Catalan number)
查看>>
JAVA算法:最长重复子串问题(JAVA解题)
查看>>
JAVA算法:最长重复子序列(JAVA)
查看>>
LeetCode刷题:20. Valid Parentheses
查看>>
LeetCode刷题:1003. Check If Word Is Valid After Substitutions
查看>>
LeetCode刷题:301. Remove Invalid Parentheses (DFS算法设计和BFS算法设计)
查看>>
LeetCode刷题:403. Frog Jump 青蛙过河问题JAVA算法设计
查看>>
JAVA算法:贪心算法典型题目详解 (JAVA版本 共6题)
查看>>