⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.c

📁 二叉树的前序、中序、后序和层次遍历
💻 C
字号:
#include<stdio.h>
#include"stdlib.h"
#define MAX 20
#define NULL  0
typedef int  Status;
typedef struct BiTNode{
char  data;
struct BiTNode *lchild,*rchild ;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree *T)
{char ch;
 ch=getchar();
 if(ch=='#') (*T)=NULL;
 else{(*T)=(BiTree)malloc(sizeof(BiTNode));
 (*T)->data=ch;
 CreateBiTree(&(*T)->lchild);
 CreateBiTree(&(*T)->rchild);
 }
 return 1;
}
void PreOrder(BiTree T)
{if(T){
  printf("%2c",T->data);
  PreOrder(T->lchild);
  PreOrder(T->rchild);
  }
}
void InOrder(BiTree T)
{if(T)
 {InOrder(T->lchild);
  printf("%2c",T->data);
  InOrder(T->rchild);
 }
}
void PostOrder(BiTree T)
{if(T)
 {PostOrder(T->lchild);
  PostOrder(T->rchild);
  printf("%2c",T->data);
 }
}
void LevelOrder(BiTree T)
{BiTree Queue[MAX],b;
 int front,rear;
 front=rear=0;
 if(T)
 {Queue[rear++]=T;
       while(front!=rear)
        {b=Queue[front++];
        printf("%2c",b->data);
        if(b->lchild!=NULL)  Queue[rear++]=b->lchild;
        if(b->rchild!=NULL)  Queue[rear++]=b->rchild;
        }
       }
 
     
}
int depth(BiTree T)
{int dep1,dep2;
 if(T==NULL) return 0;
 else{dep1=depth(T->lchild);
      dep2=depth(T->rchild);
      return dep1>dep2?dep1+1:dep2+1;
      }
}
main()
{BiTree T=NULL;
 printf("Create a Binary Tree\n");
 CreateBiTree(&T);
 printf("The preorder is:\n");
 PreOrder(T);
 printf("\nThe inorder is:\n");
 InOrder(T);
 printf("\nThe postorder is:\n");
 PostOrder(T);
 printf("\nThe level order is:\n");
 LevelOrder(T);
 printf("\nThe depth is:%d\n",depth(T));
 getch();
}

⌨️ 快捷键说明

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