二叉树排序
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
struct data{
int num;
struct data* lbaby, *rbaby;
}*root, *tree, *leaf;
void find(int,struct data*);
void output(struct data*);
void main()
{
int data[10] = {75,23,98,44,57,12,29,64,38,82};
int i;
printf("
<<Binary tree sort>>
");
printf("
Number:");
for (i = 0; i < 10; i++)
printf("%d ",data[i]);
puts("");
for (i = 0; i < 60; i++) printf("-");
root = (struct data*)malloc(sizeof(struct data));
root->num = data[0];
root->lbaby = NULL;
root->rbaby = NULL;
printf("
Access:");
output(root);
leaf = (struct data*)malloc(sizeof(struct data));
for (i = 1; i < 10; i++)
{
leaf->num = data[i];
leaf->lbaby = NULL;
leaf->rbaby = NULL;
find(leaf->num,root);
if (leaf->num>tree->num)
tree->rbaby = leaf;
else
tree->lbaby = leaf;
printf("
Access:");
output(root);
leaf = (struct data*)malloc(sizeof(struct data));
}
puts("");
for (i = 0; i < 60; i++) printf("-");
printf("
Sorting:");
output(root);
printf("
");
system("pause");
}
void find(int input, struct data* papa)
{
if ((input>papa->num) && (papa->rbaby != NULL))
find(input, papa->rbaby);
else if ((input < papa->num) && (papa->lbaby != NULL))
find(input, papa->lbaby);
else
tree = papa;
}
void output(struct data* node)
{
if (node != NULL)
{
output(node->lbaby);
printf("%d ",node->num);
output(node->rbaby);
}
}
![測试1:](http://img.blog.csdn.net/20150602152053546)