二叉树实现源代码

有苦没处说啊1

有苦没处说啊1

2016-02-19 17:20

下面,图老师小编带您去了解一下二叉树实现源代码,生活就是不断的发现新事物,get新技能~

  二叉树实现源代码如下:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  

#include conio.h
#include stdio.h
#include stdlib.h
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -2
typedef int status;
typedef struct BiNode
{
  char Data;
  struct BiNode* lChild;
  struct BiNode* rChild;
}BiNode,*pBiNode;
status CreateTree(BiNode** pTree);
status PreOrderTraval(BiNode* pTree);
status Visit(char Data);
status Display(BiNode* pTree,int Level);
status Clear(BiNode* pTree);
BiNode *pRoot=NULL;
main()
{
  clrscr();
  CreateTree(&pRoot);
  printf("nPreOrder:");
  PreOrderTraval(pRoot);
  printf("n");
  printf("nInOrder:");
  InOrderTraval(pRoot);
  printf("n");
  printf("nPostOrder:");
  PostOrderTraval(pRoot);
  printf("n");
  printf("nShowLeaves:");
  ShowLeaves(pRoot);
  printf("n-----------------------n");
  printf("n");
  Display(pRoot,0);
  printf("n");
  printf("nDeleting Tree:n");
  DelTree(pRoot);
  printf("BiTree Deleted.");
  getch();
}
status CreateTree(BiNode** pTree) /*Input Example: abd##e##cf##g##*/
{
  char ch;
  scanf("%c",&ch);
  if(ch==‘#‘)
  {
    (*pTree)=NULL;
  }
  else
  {
    if(!((*pTree)=(BiNode*)malloc(sizeof(BiNode))))
    {
      exit(OVERFLOW);
    }
    (*pTree)-Data=ch;
    CreateTree(&((*pTree)-lChild));
    CreateTree(&((*pTree)-rChild));
  }
return OK;
}
status PreOrderTraval(BiNode* pTree)
{
  if(pTree)
  {
    if(Visit(pTree-Data))
    {
      if(PreOrderTraval(pTree-lChild))
      {
        if(PreOrderTraval(pTree-rChild))
        {
          return OK;
        }
      }
    }
    return ERROR;
  }
  else
  {
    return OK;
  }
}
status InOrderTraval(BiNode* pTree)
{
  if(pTree)
  {
    if(InOrderTraval(pTree-lChild))
    {
      if(Visit(pTree-Data))
      {
        if(InOrderTraval(pTree-rChild))
        {
          return OK;
        }
      }
      return ERROR;
    }
    return ERROR;
  }
  else
  {
    return OK;
  }
}
status PostOrderTraval(BiNode* pTree)
{
  if(pTree)
  {
    if(PostOrderTraval(pTree-lChild))
    {
      if(PostOrderTraval(pTree-rChild))
      {
        if(Visit(pTree-Data))
        {
          return OK;
        }
        return ERROR;
      }
    }
    return ERROR;
  }
  else
  {
    return OK;
  }
}
status Visit(char Data)
{
  printf("%c",Data);
  return OK;
}
status Display(BiNode* pTree,int Level)
{
  int i;
  if(pTree==NULL) return;
  Display(pTree-lChild,Level+1);
  for(i=0;iLevel-1;i++)
  {
    printf(" ");
  }
  if(Level=1)
  {
    printf("--");
  }
  printf("%cn",pTree-Data);
  Display(pTree-rChild,Level+1);
}
status ShowLeaves(BiNode* pTree)
{
  if(pTree)
  {
    if(ShowLeaves(pTree-lChild))
    {
      if(ShowLeaves(pTree-rChild))
      {
        if((pTree-lChild==NULL)&&(pTree-rChild==NULL))
        {
          if(!Visit(pTree-Data))
          {
            return ERROR;
          }
        }
        return OK;
      }
    }
    return ERROR;
  }
  else
  {
    return OK;
  }
}
status DelTree(BiNode* pTree)
{
  if(pTree)
  {
    if(DelTree(pTree-lChild))
    {
      if(DelTree(pTree-rChild))
      {
        printf("Deleting %cn",pTree-Data);
        free((void*)pTree);
        return OK;
      }
    }
    return ERROR;
  }
  else
  {
    return OK;
  }
}

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

二叉树实现源代码

编程语言 网络编程
二叉树实现源代码

创建二叉树 二叉树如何删除节点操作教程

编程语言 网络编程
创建二叉树 二叉树如何删除节点操作教程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

简单二叉树类

C语言教程 C语言函数
简单二叉树类

二叉树的几种运算方法

编程语言 网络编程
二叉树的几种运算方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

数据结构C语言实现系列——二叉树

编程语言 网络编程
数据结构C语言实现系列——二叉树

clone模式在平衡排序二叉树实现中的应用

C语言教程 C语言函数
clone模式在平衡排序二叉树实现中的应用

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用Oracle9ias开发无线应用程序

用Oracle9ias开发无线应用程序

爱情就是赌局 我愿意赌一次 - QQ伤感分组

爱情就是赌局 我愿意赌一次 - QQ伤感分组
下拉加载更多内容 ↓