博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 二叉链表
阅读量:7001 次
发布时间:2019-06-27

本文共 1688 字,大约阅读时间需要 5 分钟。

#include <iostream>

using namespace std;

#include "Status.h"

typedef char TElemType;

#include "BiTree.h"

int main()

{

 BiTree T;  

CreateBiTree(T);

 cout<<"二叉树的深度为:"<<Depth(T)<<endl;  

 cout<<"二叉树中结点个数为:"<<NodeCount(T)<<endl;

 cout<<"二叉树中叶子结点个数为:"<<LeavesNodeCount(T)<<endl;

 cout<<"先序遍历:";  PreOrderTraverse(T);  cout<<"\n中序遍历:";  

 InOrderTraverse(T);  

 cout<<"\n后序遍历:";  

 PostOrderTraverse(T);  

 cout<<endl;

 return 0;

}

---------*****Status.h******-------------

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

typedef int Status;

---------*****BiTree.h******--------------

typedef struct BiTNode{

 TElemType data;    //结点数据域 

 struct BiTNode *lchild,*rchild;  //左右孩子指针

}BiTNode,*BiTree;  

void CreateBiTree(BiTree &T)

{

 char ch;

 cin>>ch;

 if(ch=='#') T=NULL;

 else{  

  T=new BiTNode;  

  T->data=ch;  

  CreateBiTree(T->lchild);   

  CreateBiTree(T->rchild);

  }

}

 int Depth(BiTree T)

{

 if(T==NULL) return 0;

 else  {   

   int m=Depth(T->lchild);    

   int n=Depth(T->rchild);    

   if(m>n) return m+1;   

   else return n+1;

  }

}

int NodeCount(BiTree T)

{

  if(T==NULL) return 0;

  else return NodeCount(T->lchild)+NodeCount(T->rchild)+1;

}

int LeavesNodeCount(BiTree T)

{

   if(!T) return 0;  

   else if(!T->lchild&&!T->rchild) return 1;

   else return LeavesNodeCount(T->lchild)+LeavesNodeCount(T->rchild);

}

void PreOrderTraverse(BiTree T)

{

   if(T)  {   cout<<T->data;   PreOrderTraverse(T->lchild);   PreOrderTraverse(T->rchild);  }

}

void InOrderTraverse(BiTree T)

{

 if(T)  {   InOrderTraverse(T->lchild);   cout<<T->data;   InOrderTraverse(T->rchild);  }

}

void PostOrderTraverse(BiTree T)

{

 if(T)  {   PostOrderTraverse(T->lchild);   PostOrderTraverse(T->rchild);   cout<<T->data;  }

}

转载于:https://www.cnblogs.com/YY-Xcode/p/4920069.html

你可能感兴趣的文章
matlab 获得corner点(未完待续)
查看>>
Windows下快速建立cocos2d-x项目
查看>>
python break ,continue和 pass 语句(八)
查看>>
发布一个Python小程序:ManHourCalendar
查看>>
一次sendmsg的改造过程
查看>>
Bugzilla
查看>>
HDU 4608 I-number
查看>>
题目1047:素数判定
查看>>
Codefroces 958C2 - Encryption (medium)
查看>>
牛客网NOIP赛前集训营-提高组(第七场)C 洞穴
查看>>
SqlServer 日期函数
查看>>
C# Winform任务栏闪烁
查看>>
诗经.国风.周南
查看>>
Js文本溢出自动添加省略号ellipsis
查看>>
MySQL 介绍
查看>>
南阳理工556 最大公约数
查看>>
rootkit:实现隐藏进程
查看>>
星哥自述
查看>>
进制转换
查看>>
ASP.NET 5简介
查看>>