主观

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。

  【说明】

 本程序利用非递归算法实现二叉树后序遍历。

 【函数】

 #include<stdio.h>

 #include<stdlib.h>

 typedef struct node{/*二叉树的结点数据结构类型*/

   char data;

   struct node *left;

   struct node *right;

 }BTREE;

 void SortTreelnsert(BTREE **tree, BTREE *s)

 {

   if(*tree==NULL)*tree=s;

   else

     if(s->data<(*tree)->data)

       SortTreelnsert((1),s);

     else if(s->data>=(*tree)->data)

       SortTreelnsert((2),s);

 }

 void TraversalTree(BTREE *tree)

 {

   BTREE *stack[1 000],*p;

   int tag[1000],top=0;

   p=tree;

   do{

     while(p !=NULL)

     {

       stack[++top]=p;

        (3);

       tag[top]=0;  /*标记栈顶结点的左子树已进行过后序遍历*/

     }

     while(top>0&&(4))/*栈顶结点的右子树是否被后序遍历过*/

     {

       p=stack[top--];

       putchar(p->data);

     }

     if(top>0)/*对栈顶结点的右子树进行后序遍历*/

     {

        (5);

       tag[top]=1;

     }

   }while(top>0);

 }

 void PrintSortTree(BTREE *tree)

 {

   if(tree !=NULL)

   {

     printSortTree(tree->left);

     putchar(tree->data);

     pdntSortTree(tree->right);

   }

 }

 main()

 {

   BTREE *root=NULL, *node;

   char ch;

   ch=getchar();

   while(ch !='#')

   {

     node=(BTREE*)malloc(sizeof(BTREE));

     node->data=ch;

     node->left=node->right=NULL;

     SortTreelnsert(&root, node);

     ch=getchar();

   }

   PrintSortTree(root);

   putchar('\n');

   TraversalTree(root);

 }

参考答案
您可能感兴趣的试题

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。

  【说明】

 本程序利用非递归算法实现二叉树后序遍历。

 【函数】

 #include<stdio.h>

 #include<stdlib.h>

 typedef struct node{/*二叉树的结点数据结构类型*/

   char data;

   struct node *left;

   struct node *right;

 }BTREE;

 void SortTreelnsert(BTREE **tree, BTREE *s)

 {

   if(*tree==NULL)*tree=s;

   else

     if(s->data<(*tree)->data)

       SortTreelnsert((1),s);

     else if(s->data>=(*tree)->data)

       SortTreelnsert((2),s);

 }

 void TraversalTree(BTREE *tree)

 {

   BTREE *stack[1 000],*p;

   int tag[1000],top=0;

   p=tree;

   do{

     while(p !=NULL)

     {

       stack[++top]=p;

        (3);

       tag[top]=0;  /*标记栈顶结点的左子树已进行过后序遍历*/

     }

     while(top>0&&(4))/*栈顶结点的右子树是否被后序遍历过*/

     {

       p=stack[top--];

       putchar(p->data);

     }

     if(top>0)/*对栈顶结点的右子树进行后序遍历*/

     {

        (5);

       tag[top]=1;

     }

   }while(top>0);

 }

 void PrintSortTree(BTREE *tree)

 {

   if(tree !=NULL)

   {

     printSortTree(tree->left);

     putchar(tree->data);

     pdntSortTree(tree->right);

   }

 }

 main()

 {

   BTREE *root=NULL, *node;

   char ch;

   ch=getchar();

   while(ch !='#')

   {

     node=(BTREE*)malloc(sizeof(BTREE));

     node->data=ch;

     node->left=node->right=NULL;

     SortTreelnsert(&root, node);

     ch=getchar();

   }

   PrintSortTree(root);

   putchar('\n');

   TraversalTree(root);

 }

阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。

  【说明】

 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图所示的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。

 本程序根据输入的列表生成一棵M叉树,并由M叉树再输出列表。

            

 【函数】

 #include  

 #include  

 #define  M  3       /*三叉树*/

 typedef struct node{

   int val;

   struct node *subTree[M];

 }NODE;

 char buf[255], *str=buf;

 NODE *d=NULL;

 NODE *makeTree()  /*由列表生成M叉树*/

 {

   int k; NODE *s;

   s=(1);

   s->val=*str++;

   for(k=0;k<M;k++)

     s->subTree[k]=NULL;

   if(*str=='(')

   {

     k=0;

     do{

        str++;

        s->subTree[k]=(2);

        if(*str==')')

        {

           str++;

           break;

        }

        k=k+1;

     }while((3));

   }

   return s;

 }

 void walkTree(NODE *t)   /*由M叉树输出列表*/

 {

   int i;

   if(t !=NULL)

   {

      (4);

     if(t->subTree[0]==NULL)

         return;

     putchar('(');

     for(i=0;i<M;i++)

     {

        (5);

       if(i !=M-1 && t->subTree[i+1]!=NULL)

         putchar(',');

     }

     putchar(')');

   }

 }

 void main()

 {

   printf("Enter exp: ");

   scanf("%s",str);

   d=makeTree();

   walkTree(d);

   putchar('\n');

 }

¥

订单号:

遇到问题请联系在线客服

订单号:

遇到问题请联系在线客服