| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1185 人关注过本帖, 1 人收藏
标题:二叉树先序遍历,帮忙看下这个程序执行结果为什么不对呀,输出了一堆?和P
只看楼主 加入收藏
blueparrot
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-2-10
结帖率:100%
收藏(1)
已结贴  问题点数:5 回复次数:4 
二叉树先序遍历,帮忙看下这个程序执行结果为什么不对呀,输出了一堆?和P
#include <stdio.h>
#include <malloc.h>

typedef struct BiTree
{
    char data;
    struct BiTree * pLchild;
    struct BiTree * pRchild;

}BITREE,* PBT;

PBT createBiTree(void)
{
    PBT pBTa = (PBT)malloc(sizeof(BITREE));
    PBT pBTb = (PBT)malloc(sizeof(BITREE));
    PBT pBTc = (PBT)malloc(sizeof(BITREE));
    PBT pBTd = (PBT)malloc(sizeof(BITREE));
    PBT pBTe = (PBT)malloc(sizeof(BITREE));
    PBT pBTf = (PBT)malloc(sizeof(BITREE));
    PBT pBTg = (PBT)malloc(sizeof(BITREE));

    pBTa->data = 'A';
    pBTb->data = 'B';
    pBTc->data = 'C';
    pBTd->data = 'D';
    pBTe->data = 'E';
    pBTf->data = 'F';
    pBTg->data = 'G';

    pBTa->pLchild = pBTc;
    pBTa->pRchild = pBTb;
    pBTc->pLchild = NULL;
    pBTc->pRchild = pBTd;
    pBTd->pLchild = pBTd->pRchild = NULL;
    pBTb->pLchild = pBTe;
    pBTb->pRchild = pBTf;
    pBTe->pLchild = NULL;
    pBTe->pRchild = pBTg;
    pBTf->pLchild = pBTf->pRchild = NULL;

    return pBTa;
}

void preTraverse(PBT pBT)
{
    if(pBT != NULL)
    {
        printf("%c\n",pBT->data);

        if (pBT->pLchild != NULL)
        {
            preTraverse(pBT->pLchild);
        }
        if (pBT->pRchild != NULL)
        {
            preTraverse(pBT->pRchild);
        }
    }
    return;
}

int main(void)
{
    PBT pBT = createBiTree();
    preTraverse(pBT);
    return 0;
}
搜索更多相关主题的帖子: include 二叉树 
2017-02-10 10:01
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
我运行了不像你说的那样哦。可以输出,只不过到了pBTg的时候会遇到未知内存出现异常关闭使后面的pBTf无法输出,要在create函数里加一句pBTg->pLchild = pBTg->pRchild = NULL;
图片附件: 游客没有浏览图片的权限,请 登录注册
2017-02-10 10:39
blueparrot
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-2-10
收藏
得分:0 
是的,我漏了一句:pBTg->pLchild = pBTg->pRchild = NULL; 加上去就好了。这个二叉树是我自己随便编的,G是叶子节点,是我漏了一句。谢谢版主!

不过,没有这一句,我这里不能输出的,结果就是P和?,而不是正常结果后边带了一堆P和?  

见图片

图片附件: 游客没有浏览图片的权限,请 登录注册
2017-02-10 10:53
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
回复 3楼 blueparrot
不是,没有p和?。我运行的是时候是只输出到'G',出现实时错误对话框,按任意键程序关闭。
2017-02-10 14:04
blueparrot
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-2-10
收藏
得分:0 
明白了,谢谢
2017-02-10 14:16
快速回复:二叉树先序遍历,帮忙看下这个程序执行结果为什么不对呀,输出了一堆? ...
数据加载中...
 
   



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

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