108將有序陣列轉化為二查搜尋樹

2022-03-17 07:27:49 字數 641 閱讀 4611

# definition for a binary tree node.

class treenode:

def __init__(self, x):

self.val = x

self.left = none

self.right = none

from typing import list

class solution:

def sortedarraytobst(self, nums: list[int]) -> treenode:

# 如果列表為空的話,就返回空節點

if nums == : return

# 取列表中間的那個值。當做根節點

mid = len(nums) // 2

mid_value = nums[mid]

root = treenode(mid_value)

# 列表左邊的值為根節點的左兒子,

root.left = self.sortedarraytobst(nums[:mid])

# 右邊的值為根節點的右兒子

root.right = self.sortedarraytobst(nums[mid + 1 :])

return root

將有序陣列轉化為二叉搜尋樹

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...

108 將有序陣列轉換為二叉搜尋樹

將乙個按照公升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。本題中,乙個高度平衡二叉樹是指乙個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。示例 給定有序陣列 10,3,0,5,9 乙個可能的答案是 0,3,9,10,null,5 它可以表示下面這個高度平衡二叉搜尋樹 0 3 9 10...

108 將有序陣列轉換為二叉搜尋樹

詳見乙個老外的的discuss。這道題考察的其實是二分查詢的知識。二叉搜尋樹的中序遍歷是乙個遞增有序序列,而中序遍歷是左根右,即根在中序遍歷的中間,則可以由中序遍歷的序列找到根的位置。找到根的位置後,將原序列分為兩個子串行,則再在每個子串行中找根。另外,從該題中還可以學到一種leetcode中初始化...