LeetCode 重建二叉樹

2021-10-19 17:25:49 字數 900 閱讀 2268

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

示例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...