建立一棵二叉排序树
定义 二叉排序树(也称二叉查找树),或者是一棵空的二叉树,或者是具有下列性质的二叉树:
⑴ 若它的左子树不空,则左子树上所有结点的值均小于根结点的值;
⑵ 若它的右子树不空,则右子树上所有结点的值均大于根结点的值;
⑶ 它的左右子树也都是二叉排序树。
中序遍历二叉排序树可以得到一个按关键码的有序数列。
建树 【建立一棵二叉排序树】脱胎于二叉树,区别是每个节点数据要进行比对,再进行插入,小插左,大插右,直接上代码,清楚明白。
#include
using namespace std;
#define N 100typedefstruct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
BiTree root=NULL;
int n,k[N];
void inOrder(BiTree T)//中序遍历
{ if(T!=NULL)
{
inOrder(T->lchild);
//左
printf("%d ",T->data);
// 根
inOrder(T->rchild);
//右
}
}void insert(int m)
{
BiTree p1, p2;
if(root==NULL)
{
root=new BiTNode;
root->data=https://www.it610.com/article/m;
root->lchild=root->rchild=NULL;
}
else
{
p1=root;
while(m!=p1->data)
{
if((mdata) && (p1->lchild!=NULL))
{
p1=p1->lchild;
}
else if((m>p1->data) && (p1->rchild!=NULL))
{
p1=p1->rchild;
}
else if((mdata) && (p1->lchild==NULL))
{
p2=new BiTNode;
p2->data=https://www.it610.com/article/m;
p2->lchild=p2->rchild=NULL;
p1->lchild=p2;
return;
}
else if((m>p1->data) && (p1->rchild==NULL))
{
p2=new BiTNode;
p2->data=https://www.it610.com/article/m;
p2->lchild=p2->rchild=NULL;
p1->rchild=p2;
return;
}
}
}
}void create()
{
cout<<"输入节点数量:";
cin>>n;
for(int i=0;
i>k[i];
}
for(int i=0;
i
推荐阅读
- C++简单又轻松建立链式二叉树流程
- 数据结构第五站(树和二叉树)
- 数据结构|二叉树链式结构的实现及应用
- 数据结构算法|二叉树链式存储之 前序,中序 ,后序遍历 查找
- 计算机二叉树讲解ppt,数据结构二叉树ppt.ppt
- 数据结构|【数据结构周周练】008 二叉树的链式创建及测试
- 从零开始学习数据结构|学习数据结构--第四章(树与二叉树(二叉树的顺序存储和链式存储))
- 数据结构与算法|详解线索二叉树
- 代码分享|C语言手写二叉树(链式存储结构)
- 算法计算经典|二叉树知识点最详细最全讲解