method.c

来自「二叉树遍历的算法程序」· C语言 代码 · 共 75 行

C
75
字号
#include <stdio.h>
#include "head.h"
   

void creatree(BTree **BT,char *str)
{
      BTree *stack[MaxSize],*p;
      int top=-1,k,j=0;/*top为栈指针,k指定是左还是右孩子,j为str指针*/
      char ch;
      *BT=NULL;
      ch=str[j];
 
	  while (ch!='\0')
      {
	     switch(ch)
		 {
	        case '(':top++;stack[top]=p;k=1;  /*为左结点*/
		             break;
	        case ')':top--;
		             break;
	        case ',':k=2;   /*为右结点*/
		             break;
	        default: p=(BTree *)malloc(sizeof(BTree));
		             p->data=ch;
					 p->left=p->right=NULL;
		             if (*BT==NULL) /*根结点*/
			            *BT=p;
		             else
					 {
		                switch(k)
						{
			              case 1:stack[top]->left=p;
				                 break;
			              case 2:stack[top]->right=p;
						}
					 }
		 }
	     j++;
	     ch=str[j];
      }
}


void preorder(BTree *BT)
{
     if (BT!=NULL)
     {
 	    printf("%c",BT->data);
	    preorder(BT->left);
	    preorder(BT->right);
     }
}


void inorder(BTree *BT)
{
    if (BT!=NULL)
    {
 	   inorder(BT->left);
	   printf("%c",BT->data);
	   inorder(BT->right);
    }
}



void postorder(BTree *BT)
{
    if (BT!=NULL)
    {
	  postorder(BT->left);
	  postorder(BT->right);
	  printf("%c",BT->data);
    }
}

⌨️ 快捷键说明

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