24小时热门版块排行榜    

查看: 281  |  回复: 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的回帖
相关版块跳转 我要订阅楼主 河对岸的月 的主题更新
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售T0P一区SCI文章,我:8O5.51.O.54,科目齐全,可+急 +3 7s8du2bt8y 2026-06-26 7/350 2026-06-27 18:48 by ztgu5ulw9z
[硕博家园] 售T0P一区SCI文章,我:8O5.51.O.54,科目齐全,可+急 +4 7s8du2bt8y 2026-06-26 8/400 2026-06-27 18:47 by ztgu5ulw9z
[考博] 27年博士招生信息 +5 rvnc 2026-06-26 8/400 2026-06-27 18:32 by rvnc
[考博] 售T0P一区SCI文章,我:8O5.51.O.54,科目齐全,可+急 +3 7s8du2bt8y 2026-06-26 5/250 2026-06-27 17:07 by ztgu5ulw9z
[基金申请] 无聊看看filecode +7 流流伤 2026-06-23 10/500 2026-06-27 16:19 by 北京中袖冉老师
[基金申请] 无聊看看时间戳打发时间 +8 虎鹤双形 2026-06-23 8/400 2026-06-27 15:53 by miaochunhui
[公派出国] 售T0P一区SCI文章,我:8O5.51.O.54,科目齐全,可+急 +3 7s8du2bt8y 2026-06-26 4/200 2026-06-27 12:47 by 9g0rmhtq5w
[论文投稿] 求推荐期刊,重谢 +4 girlbaby 2026-06-23 4/200 2026-06-26 16:52 by 不打工牛马
[有机交流] 求助!! 5+3 我啥都没看见 2026-06-24 4/200 2026-06-26 09:35 by 951037019
[微米和纳米] kh550接枝Sio2失败求助 70+3 娃儿方便面 2026-06-20 3/150 2026-06-26 09:23 by 猫鱼不是鱼
[论文投稿] 职称论文投稿 170+4 guoj5292 2026-06-22 12/600 2026-06-25 22:27 by Yanyanoo
[有机交流] 反应求助 10+3 slz_1986 2026-06-24 6/300 2026-06-25 21:38 by nBu锂
[论文投稿] 基于自然哲学类比的风化壳型稀土矿 +4 太一新韵 2026-06-22 16/800 2026-06-25 18:53 by 太一新韵
[文学芳草园] 看《给阿ma的情书》有感 +6 myrtle 2026-06-21 10/500 2026-06-25 17:54 by myrtle
[基金申请] 2026年WR青拔进展 +5 chs564851482 2026-06-24 7/350 2026-06-24 18:15 by chs564851482
[基金申请] 中!中!中! +10 zhse276 2026-06-22 10/500 2026-06-24 16:48 by zjhzf5201018
[基金申请] 会评什么时候开始? +3 Vivilian 2026-06-24 4/200 2026-06-24 16:30 by jurkat.1640
[基金申请] 国自然申请五篇代表作大比拼,感觉这个是最重要的 +7 naalan7001 2026-06-22 12/600 2026-06-24 14:02 by naalan7001
[基金申请] 咨询 +3 _xyan818 2026-06-24 3/150 2026-06-24 08:12 by Equinoxhua
[基金申请] 评委有多少概率知道其他专家手中有哪些人的本子? +6 huitong441 2026-06-22 6/300 2026-06-23 15:45 by 新城子曾
信息提示
请填处理意见