//二叉排序树
//可以用来排序
#include<stdio.h>
#include<stdlib.h>
//定义树节点
struct Binode
{
int data;
Binode* lchild;
Binode* rchild;
};
//插入函数构建
void BSTinsert(Binode* &root, int key)//指针引用可修改指针的值,否则智能修改指针所指的值
{
if (root == NULL)
{
root = (Binode*)malloc(sizeof(Binode));
root->data = key;
root->lchild = NULL;
root->rchild = NULL;
}//递归一直找到指针指向为空的适合位置安放新结点
else
{
if (key < root->data)
BSTinsert(root->lchild, key);
else
BSTinsert(root->rchild, key);
}
}
//使用插入函数动态构造二叉排序树
Binode* Createbitree(int a[], int n)
{
Binode* root=NULL;
for (int i = 0; i < n; i++)
BSTinsert(root, a[i]);
return root;
}
//二叉树递归中序遍历
void midTraverse(Binode *T)
{
if (T)
{
midTraverse(T->lchild);
printf("%d ", T->data);
midTraverse(T->rchild);
}
}
//测试
int main()
{
int a[] = { 10,45,42,63,58,55,90,70,67,83 };
midTraverse(Createbitree(a, 10));
}
视频:https://www.bilibili.com/video/BV15f4y197v1?spm_id_from=333.999.0.0
ppt:https://zhuanlan.zhihu.com/p/392376743