This commit is contained in:
programmercarl
2022-10-15 16:27:34 +08:00
parent 84dec64f49
commit be320aa517
12 changed files with 101 additions and 59 deletions

View File

@@ -31,9 +31,17 @@
进入正题:
题目中说要转换为一棵高度平衡二叉搜索树。这和转换为一棵普通二叉搜索树有什么差别呢?
题目中说要转换为一棵高度平衡二叉搜索树。为什么强调要平衡呢?
其实这里不用强调平衡二叉搜索树,数组构造二叉树,构成平衡树是自然而然的事情,因为大家默认都是从数组中间位置取值作为节点元素,一般不会随机取,**所以想构成不平衡的二叉树是自找麻烦**。
因为只要给我们一个有序数组,如果强调平衡,都可以以线性结构来构造二叉搜索树。
例如 有序数组[-10-3059] 可以就可以构造成这样的二叉搜索树,如图。
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20220930173553.png)
上图中,是符合二叉搜索树的特性吧,如果要这么做的话,是不是本题意义就不大了,所以才强调是平衡二叉搜索树。
其实数组构造二叉树,构成平衡树是自然而然的事情,因为大家默认都是从数组中间位置取值作为节点元素,一般不会随机取。**所以想构成不平衡的二叉树是自找麻烦**。
在[二叉树:构造二叉树登场!](https://programmercarl.com/0106.从中序与后序遍历序列构造二叉树.html)和[二叉树:构造一棵最大的二叉树](https://programmercarl.com/0654.最大二叉树.html)中其实已经讲过了,如果根据数组构造一棵二叉树。