題目描述:
給你一棵二叉搜尋樹,請你返回一棵 平衡後 的二叉搜尋樹,新生成的樹應該與原來的樹有著相同的節點值。
如果一棵二叉搜尋樹中,每個節點的兩棵子樹高度差不超過 1 ,我們就稱這棵二叉搜尋樹是 平衡的 。
如果有多種構造方法,請你返回任意一種。
思路分析:
1.先將二叉搜尋樹進行中序遍歷儲存在list中,是有序的,然後用list構建平衡二叉樹;
2.每次需要找到list的中間值構造節點,然後依次遞迴構建左節點,右節點
class
solution
public treenode build
(int start,
int end)
int mid=start+
((end-start)
>>1)
; treenode node=
newtreenode
(list.
get(mid));
node.left=
build
(start,mid-1)
; node.right=
build
(mid+
1,end)
;return node;
}public
void
print
(treenode root)
}}
刷題筆記 將二叉搜尋樹變平衡
二叉查詢樹 binary search tree 又 二叉搜尋樹,二叉排序樹 它或者是一棵空樹,或者是具有下列性質的二叉樹 題目描述 示例 輸入 root 1,null,2,null,3,null,4,null,null 輸出 2,1,3,null,null,null,4 解釋 這不是唯一的正確答案...
Leetcode 5179 將二叉搜尋樹變平衡
給你一顆二叉搜尋樹,請你返回一顆平衡後的二叉搜素樹,新生成的樹應該與原來的樹有著相同的節點值。如果一顆二叉搜素樹中,每個節點的兩顆子樹高度差不超過1,我們就稱這棵二叉搜尋樹是平衡的。如果有種構造方法,請你返回任意一種。示例 輸入 root 1,null,2,null,3,null,4,null,nu...
平衡二叉搜尋樹
二叉搜尋樹的問題 平衡 banlance 平衡 當節點數量固定時,左右子樹的高度越接近,這棵二叉樹就越平衡 高度越低 最理想的狀態就是像完全二叉樹 滿二叉樹那樣,高度是最小的。前提 節點的新增 刪除順序是無法限制的,可以認為是隨機的。改進方案 在節點的新增 刪除操作之後,想辦法讓二叉搜尋樹恢復平衡 ...