將二叉搜尋樹變平衡

2021-10-06 11:18:26 字數 728 閱讀 1489

題目描述:

給你一棵二叉搜尋樹,請你返回一棵 平衡後 的二叉搜尋樹,新生成的樹應該與原來的樹有著相同的節點值。

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