
前置知识
- BST,就是我们平时说的平衡二叉树。这种树的性质是对于节点root,root左边的所有的子节点的权值都小于这个root的权值,root右边所有子树的权值都大于root的权值。
BST构建的两种方法
递归实现
-
这种实现方法一般比较方便,思维含量也相对较低。就是根据树的可递归的性质,我们对树进行递归构建,从根开始向叶子结点进行构建,我们利用二分的方法进行处理,当前边界二分之后的终点的权值就是我们当前这个结点的权值了。
-
代码如下
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param num int整型vector
* @return TreeNode类
*/
TreeNode* createTree(int l,int r,vector<int>& num){
// 递归的边界
if(l>r){
return NULL;
}
// 先求中点
int mid=(l+r)>>1;
TreeNode* now = new TreeNode(num[mid]);
now->left=createTree(l,mid-1,num

这篇博客介绍了如何使用递归和非递归方法构建平衡二叉搜索树(BST)。递归实现通过找到数组中点作为根节点,再分别构建左右子树。非递归实现则利用队列进行广度优先搜索,模拟递归过程。两种方法都能将有序数组转换为BST,非递归方法避免了实际的递归调用,提高了效率。
最低0.47元/天 解锁文章
7461

被折叠的 条评论
为什么被折叠?



