lh1996 发表于 2019-9-24 15:43:27

递归递归

void CreateBiTree(BiTree *T)
{
    char c;
    scanf("%c",&c);
    if(c==' ')
    {
      *T=NULL;
    }
    else
    {
      *T=(BiTNode *)malloc(sizeof(BiTNode));
      (*T)->data=c;
      CreateBiTree(&(*T)->lchild);
      CreateBiTree(&(*T)->rchild);
    }
}
横线这两行该怎么理解啊,求大佬指点{:5_102:}

jackz007 发表于 2019-9-24 17:24:53

本帖最后由 jackz007 于 2019-9-24 17:32 编辑

      CreateBiTree() 函数的功能是用递归函数创建二叉树型链表:

      CreateBiTree(&(*T)->lchild);// 递归创建左子节点
      CreateBiTree(&(*T)->rchild);// 递归创建右子节点

#include<stdio.h>
#include<stdlib.h>

typedef struct erch
{
   char c                  ;
   int rflat               ;
   int lflat               ;
   struct erch * zuo , * you ;
} A                        ;

void creation(A ** x)
{
         char b                              ;
         * x = NULL                            ;
         scanf("%c" , & b)                     ;
         if(b != ' ') {                        // 只要键盘输入不是空格字符,就进行新节点的创建
               printf("标志1\n")             ; // 开始创建新节点
               * x = (A *) malloc(sizeof(A)) ;
               (* x) -> c = b                ;
               (* x) -> lflat = 0            ;
               (* x) -> rflat = 0            ;
               creation(& (* x) -> zuo)      ; // 递归创建左子节点
               creation(& (* x) -> you)      ; // 递归创建右子节点
         }
}

void show(A * p)
{
      if(p) {
                printf("\n")                              ;
                printf("p -> c"   = %c\n" , p -> c)   ;
                printf("p -> lflat" = %d\n" , p -> lflat) ;
                printf("p -> rflat" = %d\n" , p -> rflat) ;
                show(p -> zuo)                            ;
                show(p -> you)                            ;
      }
}

int main(void)
{
      A * fp                                          ;
      creation(& fp)                                    ;
      show(fp)                                          ;
}

      creation() 函数在创建新节点的同时,试图利用递归分别为左、右指针创建子节点,在递归的过程中,如果遇到键盘输入是空格,则放弃新节点创建,递归到达终点。
页: [1]
查看完整版本: 递归递归