花之剑'HOME

一朵飘舞在风中的雪花,挣扎着,不想被融化。

原:二叉树排序算法

Posted on 2007-08-19 16:23 花之剑 阅读(624) 评论(0)  编辑  收藏 所属分类: c/c++ & algorithm
 1 /*
 2  *利用二叉树排序
 3  *
 4 */
 5 # include <stdio.h>
 6 # include<stdlib.h>
 7 # include<ctype.h>
 8 # include<string.h>
 9 # define MAXLEN  10
10 //结构体
11 struct tnode
12 {
13     int num;
14     struct tnode  * left;
15     struct tnode  * right;
16 }q;
17
18 // 二叉有序树 左支小右支大
19 struct tnode  * addtree(struct tnode  * p , int n)
20 {
21     int cond;
22      if (p == NULL )
23     {
24         p = (struct tnode  * ) malloc( sizeof (q));
25         p -> num     =     n;
26         p -> left = p -> right = NULL ;
27     } else   if (n <= p -> num)
28     {
29         p -> left = addtree(p -> left , n);
30     } else
31         p -> right = addtree(p -> right , n);
32      return  p;
33
34 }
35
36 // 打印出排序后的树
37 void treeprint(struct tnode  * p)
38 {
39      if  (p !=   NULL ) {
40     treeprint(p -> left);
41      printf ( " %4d \n " ,  p -> num);
42     treeprint(p -> right);
43     } else   return  ;
44 }
45 int main(int argc ,  char  * argv[])
46 {
47     int a[MAXLEN] , i , j;
48     char c;
49     struct tnode  * root;
50     root = NULL ;
51      for (i = 0 ;i != MAXLEN;i ++ )
52     {
53         scanf( " %d " ,& a[i]);
54         root = addtree(root , a[i]);
55     }
56     treeprint(root);
57      return   0 ;
58 }
59

只有注册用户登录后才能发表评论。


网站导航: