輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。
示例1複製
[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]
複製
# -*- 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.pop(0))#彈出先序遍歷的第乙個數,為根節點;
index = tin.index(root.val)#找到根節點位置,劃分為兩部分
root.left = self.reconstructbinarytree(pre, tin[:index])
root.right = self.reconstructbinarytree(pre, tin[index+1:])
return root
假定重建好了,只需要把root的左子樹和右子樹按上即可。從先序遍歷中找root,中序遍歷的root左邊為左子樹內容,右邊為右子樹內容; Leetcode 重建二叉樹
leetcode 105 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。思路 前序遍歷 根節點 左子樹 右子樹 中序遍歷 左子樹 根節點 右子樹 根據兩個遍歷結果中都不存在重複數字,那麼前序遍歷的第乙個數值為起始點,找出該值在中序遍歷陣...
leetcode 二叉樹重建
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如,給出 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7 首先注意到題目中明確指出二叉樹遍歷...
LeetCode 重建二叉樹
前序遍歷 中 左 右 中序遍歷 左 中 右 後序遍歷 左 右 中 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。definition for a binary tree node.struct treenode class soluti...