50. Leetcode 105. 从前序与中序遍历序列构造二叉树 (二叉树-二叉树构建)
生活随笔
收集整理的這篇文章主要介紹了
50. Leetcode 105. 从前序与中序遍历序列构造二叉树 (二叉树-二叉树构建)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定兩個整數數組?preorder 和 inorder?,其中?preorder 是二叉樹的先序遍歷, inorder?是同一棵樹的中序遍歷,請構造二叉樹并返回其根節點。示例 1:輸入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
輸出: [3,9,20,null,null,15,7]
示例 2:輸入: preorder = [-1], inorder = [-1]
輸出: [-1]# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = rightclass Solution:def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:if not (preorder and inorder):return None# 確定根節點root = TreeNode(preorder[0])# 用preorder[0] 去中序數組中 查找對應的元素mid_idx = inorder.index(preorder[0])# 遞歸的處理前序數組的左邊部分和中序數組的左邊部分# 遞歸處理前序數組右邊部分和中序數組的右邊部分root.left = self.buildTree(preorder[1:mid_idx+1], inorder[:mid_idx])root.right = self.buildTree(preorder[mid_idx+1:],inorder[mid_idx+1:])return root
總結
以上是生活随笔為你收集整理的50. Leetcode 105. 从前序与中序遍历序列构造二叉树 (二叉树-二叉树构建)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 49. Leetcode 117. 填充
- 下一篇: 51. Leetcode 106. 从中