二叉树排序

二叉树排序实现
本文介绍了一种基于二叉树的数据排序方法,并提供了完整的C语言实现代码。通过递归地构建二叉搜索树来实现对整数数组的排序,同时展示了如何遍历这棵树以输出排序后的结果。

二叉树排序

// 二叉树排序.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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值