刷題筆記 將二叉搜尋樹變平衡

2021-10-04 04:07:59 字數 1239 閱讀 8890

二叉查詢樹(binary search tree)(又:二叉搜尋樹,二叉排序樹)它或者是一棵空樹,或者是具有下列性質的二叉樹:

題目描述

示例:

輸入:root = [1,null,2,null,3,null,4,null,null]

輸出:[2,1,3,null,null,null,4]

解釋:這不是唯一的正確答案,[3,1,4,null,2,null,null] 也是乙個可行的構造方案。

解題思路
# definition for a binary tree node.

# class treenode(object):

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

(object):

defbalancebst

(self, root)

:"""

:type root: treenode

:rtype: treenode

"""res =

definorder

(node)

:if node:

inorder(node.left)

inorder(node.right)

inorder(root)

defsortedtobst

(l, r)

:if l > r:

return

none

mid =

(l + r)

>>

1 root = treenode(res[mid]

) root.left = sortedtobst(l, mid -1)

root.right = sortedtobst(mid +

1, r)

return root

return sortedtobst(0,

len(res)-1

)

將二叉搜尋樹變平衡

題目描述 給你一棵二叉搜尋樹,請你返回一棵 平衡後 的二叉搜尋樹,新生成的樹應該與原來的樹有著相同的節點值。如果一棵二叉搜尋樹中,每個節點的兩棵子樹高度差不超過 1 我們就稱這棵二叉搜尋樹是 平衡的 如果有多種構造方法,請你返回任意一種。思路分析 1.先將二叉搜尋樹進行中序遍歷儲存在list中,是有...

Leetcode 5179 將二叉搜尋樹變平衡

給你一顆二叉搜尋樹,請你返回一顆平衡後的二叉搜素樹,新生成的樹應該與原來的樹有著相同的節點值。如果一顆二叉搜素樹中,每個節點的兩顆子樹高度差不超過1,我們就稱這棵二叉搜尋樹是平衡的。如果有種構造方法,請你返回任意一種。示例 輸入 root 1,null,2,null,3,null,4,null,nu...

平衡二叉搜尋樹

二叉搜尋樹的問題 平衡 banlance 平衡 當節點數量固定時,左右子樹的高度越接近,這棵二叉樹就越平衡 高度越低 最理想的狀態就是像完全二叉樹 滿二叉樹那樣,高度是最小的。前提 節點的新增 刪除順序是無法限制的,可以認為是隨機的。改進方案 在節點的新增 刪除操作之後,想辦法讓二叉搜尋樹恢復平衡 ...