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