标题:二叉树的作业 作业 求大神帮忙修改代码啊!!!
只看楼主
mz_zml
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-16
结帖率:0
已结贴  问题点数:2 回复次数:4 
二叉树的作业 作业 求大神帮忙修改代码啊!!!
实验内容
1.创建二叉树;
2.实现二叉树的水平输出算法;
3.完成对二叉树进行深度和叶子数目统计的算法;
4.完成对二叉树的中序遍历输出算法。

(注意 这不是什么课程设计 也不是专业什么的。。。是选修 选修啊啊啊 复习大军杀到  选修作业提交紧逼  大神。大神在哪里~~~  求解啊  考完了再补上 啊啊啊)

[ 本帖最后由 mz_zml 于 2013-6-29 09:47 编辑 ]
搜索更多相关主题的帖子: 二叉树 课程 统计 叶子 专业 
2013-06-29 01:21
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:1 
baidu 会保佑你的,

我行我乐
我的博客:
http://blog.yuccn. net
2013-06-29 09:01
mz_zml
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-16
得分:0 
这个代码编译的时候没有错误跟警告,
但运行时输入一串字符串之后按了回车,程序没有任何反应!!
请大神帮忙修改一下,谢谢!!
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int sum=0,num=1;
typedef struct BIRE
{
    char data;
    struct BIRE *lchild,*rchild;
} BN,*BP;
void PreOrderTraverse(BP M)/*先序*/
{
    if(M!=NULL)
    {
    printf("%c",M->data);
    PreOrderTraverse (M->lchild);
    PreOrderTraverse (M->rchild);
    }
}
BP CreatTree()/*先根节点,然后左(R)最后右(L)创建树*/
{
    char ch;
    BP M;
    scanf("mmm %c",&ch);
    if(ch==' ')
    M=NULL;
    else
    {
    M=(BN *)malloc(sizeof(BN));/*为结点开辟空间*/
    M->data=ch;
    M->lchild=CreatTree();
    M->rchild=CreatTree();
    }
    return (M);
}
void InOrderTraverse(BP M)/*中序*/
{
    if(M!=NULL)
    {
    InOrderTraverse (M->lchild);
    printf("%c",M->data);
    sum=sum+1;
    InOrderTraverse(M->rchild);
    }
}
int Depth(BP M)/* 深度 */
    {
    
    if(M==NULL)
    return(0);
    else
    return 1+(Depth(M->lchild)>Depth(M->rchild)? Depth(M->lchild):Depth(M->rchild));
    }
    
int PostOrderTraverse(BP M)/*后序*/
{
    if(M!=NULL)
    {
    PostOrderTraverse (M->lchild);
    PostOrderTraverse (M->rchild);
    printf("%c",M->data);
    }
    return sum;
}
void PrintBTree(BP root,int level)
{
int i;
    if(root!=NULL)
    {
    PrintBTree(root->rchild,level+1);
    for(i=1; i<=8*level; i++)
    printf(" ");
    printf("-------%c\n",root->data);
    PrintBTree(root->lchild,level+1);
    }
}
int main(void)/*主函数*/
{
    BP M;
    int sm;
    M=CreatTree();
    printf("先序遍历:\n");
    PreOrderTraverse(M);
    printf("\n中序遍历:\n");
    InOrderTraverse (M);
    printf("\n后序遍历:\n");
    PostOrderTraverse (M);
    printf("\n深度为:%d",Depth(M));
    printf("\n");
    sm= PostOrderTraverse (M);
    printf("\n结点总数为:\n%d",sm);
    printf("二叉树水平输出如下:\n");
    PrintBTree(M,1);
    return 0;
}


[ 本帖最后由 mz_zml 于 2013-6-29 09:46 编辑 ]
2013-06-29 09:40
mz_zml
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-3-16
得分:0 
回复 2楼 yuccn
求扩散啊
2013-06-29 17:57
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
得分:1 
你的创建是用递归来的,但是你的数据怎么输入呢?递归出口呢

C++菜鸟
2013-06-29 18:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-416332-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.086980 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved