二叉树排序

来源:互联网 发布:淘宝退货用空包判刑吗 编辑:程序博客网 时间:2024/06/06 12:45

二叉树排序

// 二叉树排序.cpp : 定义控制台应用程序的入口点。//#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("\n<<Binary tree sort>>\n");    printf("\nNumber:");    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("\nAccess:");    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("\nAccess:");        output(root);        leaf = (struct data*)malloc(sizeof(struct data));    }    puts("");    for (i = 0; i < 60; i++) printf("-");    printf("\nSorting:");    output(root);    printf("\n");    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:

0 0
原创粉丝点击