标题:二叉树先序遍历,帮忙看下这个程序执行结果为什么不对呀,输出了一堆?和P
只看楼主
blueparrot
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2017-2-10
结帖率:100%
已结贴  问题点数: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



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




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

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