c_cpp 排序数组到平衡BST
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 排序数组到平衡BST相关的知识,希望对你有一定的参考价值。
// https://www.geeksforgeeks.org/sorted-array-to-balanced-bst/
#include <iostream>
using namespace std;
struct node {
int data;
struct node* left;
struct node* right;
};
node* bst (int a[], int l, int r) {
if (l>r)
return NULL;
int m= (l+r)/2;
node *head= (node*)malloc(sizeof(node));
head->data= a[m];
head->left = bst(a, l, m-1);
head->right = bst(a, m+1, r);
return head;
}
void preOrder(node *head) {
if (head==NULL)
return;
cout<< head->data << " ";
preOrder(head->left);
preOrder(head->right);
}
int main() {
int t;
cin>>t;
while (t-->0) {
int n;
cin>>n;
int a[n];
for (int i=0;i<n;i++)
cin>>a[i];
node* head= bst(a,0, n-1);
preOrder(head);
}
}
以上是关于c_cpp 排序数组到平衡BST的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 检查给定数组是否可以表示BST的Preorder Traversal
[数据结构]二叉搜索树(BST) VS 平衡二叉排序树(AVL) VS B树(平衡多路搜索树) VS B+树 VS 红黑树(平衡二叉B树)
BST性能分析&改进思路——平衡与等价
什么是树(平衡树,排序树,B树,B+树,R树,红黑树)
BST(二叉搜索树),AVL(平衡二叉树)RBT(红黑树)的区别
细说二叉树