求助大佬二叉树问题 C语言

论坛 期权论坛 期权     
灵66   2018-4-26 14:06   2049   1
我想问:
这样创建完二叉树,指针返回T,那么T指向的不应该是最后一个节点元素吗?所以再遍历的话,不应该从最后一个开始遍历吗?但是这个代码很正确的从根节点开始的,为啥?
#include //头文件
#include
typedef struct BiTNode
{...我想问:
这样创建完二叉树,指针返回T,那么T指向的不应该是最后一个节点元素吗?所以再遍历的话,不应该从最后一个开始遍历吗?但是这个代码很正确的从根节点开始的,为啥?
#include //头文件
#include
typedef struct BiTNode
{
    char data;
    struct BiTNode *lchild,*rchild;
}
BiTNode,*BiTree;//定义结点类型
BiTree CreateBiTree()//创建树
{
    char p;BiTree T;
    scanf("%c",&p);
    if(p=='#')
        T=NULL;
    else
    {
        T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间
        T->data=p;
        T->lchild=CreateBiTree();
        T->rchild=CreateBiTree();
    }
    return (T);
}
void PreOrder(BiTree T)//先序
{
     if(T!=NULL)
   {
       printf("%c",T->data);
       PreOrder(T->lchild);
       PreOrder(T->rchild);

    }
}
void InOrder(BiTree T)//中序
{
     if(T!=NULL)
   {
       InOrder(T->lchild);
        printf("%c",T->data);
       InOrder(T->rchild);

    }
}
void PostOrder(BiTree T)//后序
{
     if(T!=NULL)
   {
       PostOrder(T->lchild);
       PostOrder(T->rchild);
       printf("%c",T->data);
    }
}
void main()//主函数
{
    BiTree Ta;
    Ta=CreateBiTree();
     printf("先序遍历:");
     printf("\n");
     PreOrder(Ta);
     printf("\n");
     printf("中序遍历:");
     printf("\n");
     InOrder(Ta);
     printf("\n");
     printf("后序遍历:");
     printf("\n");
     PostOrder(Ta);
   }展开
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
GTA小鸡  1级新秀 | 2018-4-30 01:48:55 发帖IP地址来自
T指向的当然是根节点。T->lchild=CreateBiTree();和T->rchild=CreateBiTree();分别初始化T的左子树和右子树。为什么你会认为T指向尾结点?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP