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

📄 二叉树.cpp

📁 介绍了算法基础
💻 CPP
字号:
//* * * * * * * * * * * * * * * * * * * * * * * *
//*CHAPTER          :4  (4_1)                   *
//*PROGRAM          :二叉树                     *
//*CONTENT          :建立,前序、中序、后序遍历 *
//* * * * * * * * * * * * * * * * * * * * * * * *
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
enum BOOL{False,True};
typedef struct  BiTNode      //定义二叉树节点结构
{char  data;                     //数据域
 struct BiTNode *lchild,*rchild; //左右孩子指针域
}BiTNode,*BiTree;
void CreateBiTree(BiTree &);    //生成一个二叉树
void PreOrder(BiTree);          //先序递归遍历二叉树
void InOrder(BiTree);           //中序递归遍历二叉树
void PostOrder(BiTree);         //后序递归遍历二叉树
void main()
{BiTree T;       
 char ch,j;
 int flag=1;
 BOOL temp;
 textbackground(3);  //设定屏幕颜色
 textcolor(15);
 clrscr();
 //---------------------程序解说-----------------------
 printf("本程序实现二叉树的操作。\n");
 printf("可以进行建立二叉树,递归先序、中序、后序遍历等操作。\n");
 //----------------------------------------------------
 printf("请将先序遍历二叉树的结果输入以建立二叉树。\n");
 printf("对于叶子结点以空格表示。\n");
 printf("例如:abc  de g  f   (回车),建立如下二叉树:\n");
 printf("           a      \n");
 printf("          /       \n");
 printf("         b        \n");
 printf("        / \\       \n");
 printf("       c   d      \n");
 printf("          / \\     \n");
 printf("         e   f    \n");
 printf("          \\       \n");
 printf("           g      \n");
 CreateBiTree(T);       //初始化队列
 getchar();
 while(flag)
    { printf("请选择: \n");
      printf("1.递归先序遍历\n");
      printf("2.递归中序遍历\n");
      printf("3.递归后序遍历\n");
      printf("4.退出程序\n");
      scanf(" %c",&j);
      switch(j)
	{case '1':if(T)
		     {printf("先序遍历二叉树:");
		      PreOrder(T);
		      printf("\n");
		     }
		  else printf("二叉树为空!\n");
		  break;
	 case '2':if(T)
		    {printf("中序遍历二叉树:");
		     InOrder(T);
		     printf("\n");
		    }
		  else printf("二叉树为空!\n");
		  break;
	 case '3':if(T)
		    {printf("后序遍历二叉树:");
		     PostOrder(T);
		     printf("\n");
		    }
		  else printf("二叉树为空!\n");
		  break;
	 default:flag=0;printf("程序运行结束,按任意键退出!\n");
	}
    }
getch();
}

void CreateBiTree(BiTree &T)
{char ch;
 scanf("%c",&ch);    //读入一个字符   
 if(ch==' ') T=NULL;
 else {T=(BiTNode *)malloc(sizeof(BiTNode)); //生成一个新结点
       T->data=ch;
       CreateBiTree(T->lchild);  //生成左子树
       CreateBiTree(T->rchild);  //生成右子树
      }
}
void PreOrder(BiTree T)
{
 if(T)
  {
   printf("%c",T->data);  //访问结点
   PreOrder(T->lchild);   //遍历左子树
   PreOrder(T->rchild);   //遍历右子树
  }
}
void InOrder(BiTree T)
{if(T)
  {
   InOrder(T->lchild);   //遍历左子树 
   printf("%c",T->data); //访问结点
   InOrder(T->rchild);   //遍历右子树
  }
}
void PostOrder(BiTree T)
{
 if(T)
  {
   PostOrder(T->lchild); //遍历左子树
   PostOrder(T->rchild); //访问结点
   printf("%c",T->data); //遍历右子树
  }
}

⌨️ 快捷键说明

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