将有序数组转换为平衡二叉搜索树

将有序数组转换为二叉搜索树

1、题目

图1

2、题解

中序遍历

在给定中序遍历序列数组的情况下,每一个子树中的数字在数组中一定是连续的,因此可以通过数组下标范围确定子树包含的数字,下标范围为[left,right]。当\(left>rigth\)时,平衡二叉搜索树为空。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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 = right
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
def stucture(left,right):

if left>right:
return None

mid = (left+right)//2

root = TreeNode(nums[mid])
root.left = stucture(left,mid-1)
root.right = stucture(mid+1,right)

return root

return stucture(0,len(nums)-1)

将有序数组转换为平衡二叉搜索树
http://example.com/2024/04/09/将有序数组转换为平衡二叉搜索树/
作者
Z Z
发布于
2024年4月9日
许可协议