//二叉查找树的一些功能
#include<iostream>
#include<malloc.h>
#include<stdio.h>
using namespace std;
struct Node
{
int data;
struct Node* left;
struct Node* right;
};
//初始化
void Init(Node* Tree)
{
Tree->data=-1; //设置为-1代表根节点没有值
Tree->left=NULL;
Tree->right=NULL;
}
//插入数据
void Insert(Node* Tree,int number)
{
Node* p=Tree;
if(p->data==-1)
{
p->data=number;
return ;
}
Node* q=(Node*)malloc(sizeof(Node)); //新分配的节点
q->data=number;
q->left=q->right=NULL;
while(1)
{
if(p->data>number)
{
if(p->left==NULL)
{
p->left=q;
return ;
}
else
p=p->left;
}
else if(p->data<=number)
{
if(p->right==NULL)
{
p->right=q;
return ;
}
else
p=p->right;
}
}
}
//输出所有数据
void output(Node* Tree)
{
Node* p=Tree;
if(p->data==-1)
{
printf("There's no element in this BinarySearchTree.\n");
return ;
}
if(p->left!=NULL)
output(p->left);
printf("%d ",p->data);
if(p->right!=NULL)
output(p->right);
}
//查找二叉数里面是否有该数字
bool Search(Node* Tree,int number)
{
Node *p=Tree;
if(p->data==number)
return true;
else
{
if(p->data>number)
{
if(p->left==NULL)
return false;
else
Search(p->left,number);
}
else
{
if(p->right==NULL)
return false;
else
Search(p->right,number);
}
}
}
int main()
{
freopen("1.txt","r",stdin);
int N;
scanf("%d",&N); //插入几个数字
Node* Tree;
Tree=(Node*)malloc(sizeof(Node));
Init(Tree);
for(int i=1;i<=N;++i)
{
Insert(Tree,i);
}
output(Tree);
printf("\n");
return 0;
}
还少一个删除的过程没加上,传递过程中需要传递父节点,子节点,比较麻烦,我想项有没有更加好的方法,后面的平衡二叉树一并写好~~~
二叉查找树
最新推荐文章于 2024-07-16 16:37:19 发布