习题1-二叉树中序遍历.c

来自「数据结构各章实验源代码; 数据结构实验源代码」· C语言 代码 · 共 48 行

C
48
字号
#include  <stdio.h>
#include  "datastru.h"
#include  <malloc.h>
#include  "二叉树.c"

void inorder(BTCHINALR *bt)
/*中序遍历二叉树(递归算法)*/
{if(bt != NULL)
	{	inorder(bt->lchild);
		printf("%c  ",bt->data);
		inorder(bt->rchild);	}
}

void  inorder_notrecursive(BTCHINALR  *bt)
/*中序遍历二叉树(非递归算法)*/
{BTCHINALR  *q,  *s[20];
  int  top = 0;
  int  bool = 1;

  q = bt;
  do {while(q != NULL)
          {  top ++;  s[top] = q;   q = q->lchild; }
       if(top == 0)   bool = 0;
       else { q = s[top];
	      top --;
	      printf("%c  ",q->data);
	      q = q->rchild; }
  }while(bool);
 }

main( )
{ BTCHINALR  *bt;
  char ch;
  int i;

 bt = createbt(); i = 1;
 while(i) {
	 printf("\n中序遍历二叉树(递归按y键,非递归按n键):  ");
     fflush(stdin);
     scanf("%c",&ch);
     if(ch == 'y') inorder(bt);  else inorder_notrecursive(bt);
     printf("\n");
	 printf("\n继续操作吗?(继续按1键,结束按0键):  ");
     fflush(stdin);
     scanf("%d",&i);
 }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?