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

📄 二叉树的遍历.cpp

📁 包括了对二叉树的相关操作
💻 CPP
字号:
#include <stdio.h>
#include <malloc.h>
#include <math.h>
#include <iostream.h>
#define  STACK_INIT_SIZE  100;
#define  STACKINCREMENT  10;


int count = 0;

typedef struct BiTNode
{
  char data;
  struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;



int CreateBiTree(BiTree &T)
{
	//创建一颗二叉树
  char ch;
  scanf("%c",&ch);
  if(ch==' ')T=NULL;
  else{

    if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) return 0;
	T->data = ch;
	CreateBiTree(T->lchild);
	CreateBiTree(T->rchild);

  }
  return 1;
}

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);

   }
}

void CountLeaf (BiTree T){
	
   //对叶子结点计数
   if (T){
	  
      if ((!T->lchild)&&(!T->rchild))
         count++;     
      CountLeaf( T->lchild);  
      CountLeaf( T->rchild); 

   } 

} 



void main(){

  BiTree p;
  CreateBiTree(p);
  printf("二叉树创建完毕\n");
  printf("先序遍历二叉树递归排列结果为:\n");
  Preorder(p);
  printf("\n");
  printf("中序遍历二叉树递归排列结果为:\n");
  Inorder(p);
  printf("\n");
  printf("后序遍历二叉树递归排列结果为:\n");
  Postorder(p);
  printf("\n");
  CountLeaf(p);
  printf("\n");
  printf("二叉树中叶子结点的个数为:");
  printf("%d",count);
  printf("\n\n");

}

⌨️ 快捷键说明

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