解答
首先要了解而叉排序树如何建立,给定一组数组,建立一个而叉排序树
#include <iostream>
typedef struct BitNode{
int data;
struct BitNode *lchild, *rchild;
}BitNode, *BiTree;
bool BSTInsert(BitNode * &p, int element)
{
if(NULL == p) // 空树
{
p = new BitNode;
p->data = element;
p->lchild = p->rchild = NULL;
return true;
}
if(element == p->data) // BST中不能有相等的值
return false;
if(element < p->data) // 递归
return BSTInsert(p->lchild, element);
return BSTInsert(p->rchild, element); // 递归
}
void createBst(BitNode * &T, int a[], int n){
T = NULL;
int i;
for(i = 0; i < n; i++){
BSTInsert(T, a[i]);
}
}
//先序遍历
void preOrderTraverse(BiTree T)
{
if(T)
{
printf("%d ", T->data);
preOrderTraverse(T->lchild);
preOrderTraverse(T->rchild);
}
}
//中序遍历
void inOrderTraverse(BiTree T)
{
if(T)
{
inOrderTraverse(T->lchild);
printf("%d ", T->data);
inOrderTraverse(T->rchild);
}
}
int main(){
int a[10] = {1,3,5,2,9,4,6,0,7,8};
BiTree T;
createBst(T, a, 10);
preOrderTraverse(T);
printf("\n");
inOrderTraverse(T);
return 0;
}
第一个是先序遍历的结果,第二个是中序遍历的结果
先序遍历:中->左->右
中序遍历:左->中->右
帖子还没人回复快来抢沙发