24小时热门版块排行榜    

查看: 261  |  回复: 0
当前主题已经存档。

河对岸的月

铁虫 (初入文坛)


[资源] 【分享】二叉树算法

/* Binary tree traversal */

# include

struct NODE
{
        char Info;
        struct NODE *Left_Child;
        struct NODE *Right_Child;
};

struct NODE *Binary_Tree (char *, int, int);
void Output(struct NODE *, int );
void Pre_order(struct NODE *);
void In_order(struct NODE *);
void Post_order(struct NODE *);

/* Function to create an binary tree */

struct NODE *  Binary_Tree (char *List, int Lower, int Upper)
{
        struct NODE *Node;
        int Mid = (Lower + Upper)/2;
        Node = (struct NODE*) malloc(sizeof(struct NODE));

        Node->Info = List [Mid];
        if ( Lower>= Upper)
        {
                Node->Left_Child = NULL;
                Node->Right_Child = NULL;
                return (Node);
        }

        if (Lower <= Mid - 1)
                Node->Left_Child = Binary_Tree (List, Lower, Mid - 1);
        else
                Node->Left_Child = NULL;
        if (Mid + 1 <= Upper)
                Node->Right_Child = Binary_Tree (List, Mid + 1, Upper);
        else
                Node->Right_Child = NULL;
        return(Node);
}

/* Output function */

void Output(struct NODE *T, int Level)
{
        int i;
        if (T)
        {
                Output(T->Right_Child, Level+1);
                printf("\n";
                for (i = 0; i < Level; i++)
                        printf("   ";
                printf(" %c", T->Info);
                Output(T->Left_Child, Level+1);
        }
}

/* Pre-order traversal */

void Pre_order (struct NODE *Node)
{
        if (Node)
        {
                printf(" %c", Node->Info);
                Pre_order(Node->Left_Child);
                Pre_order(Node->Right_Child);
        }
}

/* In-order traversal */

void In_order (struct NODE *Node)
{
        if (Node)
        {
                In_order(Node->Left_Child);
                printf(" %c", Node->Info);
                In_order(Node->Right_Child);
        }
}

/* Post-order traversal */

void Post_order (struct NODE *Node)
{
        if (Node)
        {
                Post_order(Node->Left_Child);
                Post_order(Node->Right_Child);
                printf(" %c", Node->Info);
        }
}

/*  Function main */

void main()
{
        char List[100];
        int Number = 0;
        char Info;
        char choice;
        struct NODE *T = (struct NODE *) malloc(sizeof(struct NODE));
        T = NULL;
        printf("\n Input choice 'b' to break:";
        choice = getchar();
        fflush(stdin);
        while(choice != 'b')
        {
                printf("\n Input information of the node: ";
                scanf("%c", &Info);
                List[Number++] = Info;
                fflush(stdin);
                printf("\n Input choice 'b' to break:";
                choice = getchar();
                fflush(stdin);
        }
        Number --;
        printf("\n Number of elements in the list is %d", Number);
        T = Binary_Tree(List, 0, Number);
        Output(T,1);

        printf("\n Pre-order traversal\n";
        Pre_order (T);
        printf("\n In-order traversal\n";
        In_order (T);
        printf("\n Post-order traversal\n";
        Post_order (T);
}
七、测试数据
1
2
3
4
5
6
7
八、测试情况
[search]二叉树[/search]

[ Last edited by bslt on 2009-9-4 at 21:54 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 河对岸的月 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 306求调剂 +5 来好运来来来 2026-03-22 5/250 2026-03-22 16:17 by BruceLiu320
[考研] 求调剂院校信息 +6 CX 330 2026-03-21 6/300 2026-03-22 15:25 by 无懈可击111
[考研] 269专硕求调剂 +6 金恩贝 2026-03-21 6/300 2026-03-22 14:31 by ColorlessPI
[考研] 生物学一志愿985,分数349求调剂 +4 zxts12 2026-03-21 7/350 2026-03-22 09:57 by zxts12
[考研] 材料学硕333求调剂 +3 北道巷 2026-03-18 3/150 2026-03-21 18:17 by 学员8dgXkO
[考研] 297求调剂 +11 戏精丹丹丹 2026-03-17 12/600 2026-03-21 17:47 by ColorlessPI
[考研] 0805材料320求调剂 +3 深海物语 2026-03-20 3/150 2026-03-21 15:46 by 无际的草原
[考研] 机械专硕299求调剂至材料 +3 kkcoco25 2026-03-16 4/200 2026-03-21 03:52 by JourneyLucky
[考研] 330求调剂 +4 小材化本科 2026-03-18 4/200 2026-03-20 23:13 by JourneyLucky
[考研] 288求调剂 +16 于海海海海 2026-03-19 16/800 2026-03-20 22:28 by JourneyLucky
[考研] 环境工程调剂 +9 大可digkids 2026-03-16 9/450 2026-03-20 17:38 by 醉在风里
[论文投稿] 申请回稿延期一个月,编辑同意了。但系统上的时间没变,给编辑又写邮件了,没回复 10+3 wangf9518 2026-03-17 4/200 2026-03-19 23:55 by babero
[考研] 081700化工学硕调剂 +3 【1】 2026-03-16 3/150 2026-03-19 23:40 by edmund7
[考研] 320求调剂0856 +3 不想起名字112 2026-03-19 3/150 2026-03-19 22:53 by 学员8dgXkO
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考博] 26博士申请 +3 1042136743 2026-03-17 3/150 2026-03-17 23:30 by 轻松不少随
[考研] 有没有道铁/土木的想调剂南林,给自己招师弟中~ +3 TqlXswl 2026-03-16 7/350 2026-03-17 15:23 by TqlXswl
[考研] 一志愿南京大学,080500材料科学与工程,调剂 +4 Jy? 2026-03-16 4/200 2026-03-17 11:02 by gaoqiong
[考研] 11408 一志愿西电,277分求调剂 +3 zhouzhen654 2026-03-16 3/150 2026-03-17 07:03 by laoshidan
[考研] [导师推荐]西南科技大学国防/材料导师推荐 +3 尖角小荷 2026-03-16 6/300 2026-03-16 23:21 by 尖角小荷
信息提示
请填处理意见