随便solita 发表于 2020-7-10 22:28:06

二叉树的创建和遍历问题

#include <stdio.h>
#include <stdlib.h>
typedef char Elemtype;
typedef struct BiTNode
{
    Elemtype data;
    struct BiTNode *rchild,*lchild;
}BiTNode,*BiTree;

void CreateBiTree(BiTree T)
{
    char c;
    scanf("%c",&c);
    if(c==' ')
    {
      T=NULL;
    }else{
      T=(BiTree )malloc(sizeof(BiTNode));
      T->data=c;
      CreateBiTree(T->lchild);
      CreateBiTree(T->rchild);
    }
}
void visit(char c,int level)
{
    printf("%c 位于第 %d 层。\n",c,level);
}
void PreOrderTraverse(BiTree T,int level)
{
    if(T)
    {
      visit(T->data,level);
      PreOrderTraverse(T->lchild,level+1);
      PreOrderTraverse(T->rchild,level+1);
    }
}

int main()
{
    int level=1;
    BiTree T=NULL;
    CreateBiTree(T);
    PreOrderTraverse(T,level);
    return 0;
}

在创建和遍历二叉树那里,为什么把第一个函数的参数改成BiTree T就不行了呢?

永恒的蓝色梦想 发表于 2020-7-10 22:42:10

这只是一份拷贝的值。他改变了,外面的不会也跟着变。

永恒的蓝色梦想 发表于 2020-7-10 22:43:00

你是多恨星号啊,把星号基本都删了。

小甲鱼的铁粉 发表于 2020-7-11 08:11:52

{:10_278:}

爱学习520 发表于 2020-7-20 16:43:39

那要用二级指针
页: [1]
查看完整版本: 二叉树的创建和遍历问题