C++ 二叉链表

#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;  }

}

时间: 2024-10-05 05:50:23

C++ 二叉链表的相关文章

二叉树的链式存储结构----二叉链表

头文件:head.h #include<string.h> #include<ctype.h> #include<malloc.h> /* malloc()等 */ #include<limits.h> /* INT_MAX等 */ #include<stdio.h> /* EOF(=^Z或F6),NULL */ #include<stdlib.h> /* atoi() */ #include<io.h> /* eof()

数据结构之---C语言实现二叉树的二叉链表存储表示

//二叉树的二叉链表存储表示 //杨鑫 #include <stdio.h> #include <stdlib.h> #define max(a, b) a > b ? a : b //自定义max()函数 typedef char TELemType; //定义结二叉树的构体 typedef struct BTree { TELemType data; struct BTree *lChild; struct BTree *rChild; }BinTree; //二叉树的创

二叉树的二叉链表表示和实现

二叉树的二叉链表存储结构 typedef struct BiTNode { TElemType data; BiTNode * lchild, *rchild;//左右孩子指针 }BiTNode, * BiTree; 二叉链表的22个基本操作 #define ClearBiTree DestroyBiTree//清空二叉树和销毁二叉树的操作一样 void InitBiTree(BiTree &T){ T = NULL; } void DestroyBiTree(BiTree &T){ if

ACMclub 1757 二叉链表存储的二叉树 - from lanshui_Yang

题目描述: 在本题中,将会给出一个按照先序遍历得出的字符串,空格代表空的子节点,大写字母代表节点内容.请通过这个字符串建立二叉树,并按照题目描述中的一种先序遍历和两种中序遍历的算法分别输出每一个非空节点. 输入格式 输入只有一行,包含一个字符串S,用来建立二叉树.保证S为合法的二叉树先序遍历字符串,节点内容只有大写字母,且S的长度不超过100. 输出 共有三行,每一行包含一串字符,表示分别按先序.中序.中序得出的节点内容,每个字母后输出一个空格.请注意行尾输出换行. 样例输入 ABC  DE G

二叉树的链式存储结构--二叉链表

1 二叉树的链式存储结构 //二叉链表的结点结构定义 typedef struct BiTNode { int data; struct BiTNode *lchild; struct BiTNode *rchild; }BiTNode; typedef struct BiTNode *BiTree; 结构示意图如下: 2 二叉树的遍历方法 (1)前序遍历:先访问根结,然后前序遍历左子树,再前序遍历右子树. (2)

二叉链表存储二叉树

链式存储结构 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系. 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址.其结点结构为: 其中,data域存放某结点的数据信息:lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示).利用这样的结点结构表示的二叉树的链式存储结构被称为二叉链表,如图5-8所示. (a) 一棵二叉树 

_DataStructure_C_Impl:二叉树的二叉链表存储结构

// _DataStructure_C_Impl: #include<stdio.h> #include<stdlib.h> #define MaxSize 100 typedef char DataType; typedef struct Node{ //二叉链表存储结构类型定义 DataType data; //数据域 struct Node *lchild; //指向左孩子结点 struct Node *rchild; //指向右孩子结点 }*BiTree,BitNode;

用二叉链表实现二叉查找树(二)

/* 二叉查找树的链表实现: 以及三种遍历方式,删除节点: 查找节点: author:天下无双 Date:2014-5-28 Version:3.0 */ #include <iostream> #include <string> typedef int T;//树内节点的数据类型 using namespace std; class BiTree { private: struct BiNode{ T data; BiNode *lchild,*rchild; BiNode(T

二叉树的二叉链表存储

1. 版本信息 (1)CentOS 6.4发行版64位,uname -a 显示如下: Linux localhost.localdomain 3.11.6 #1 SMP Sat Nov 2 23:25:40 KST 2013 x86_64 x86_64 x86_64 GNU/Linux (2)Eclipse: Version: Kepler Service Release 2 (3)Tomcat: apache-tomcat-7.0.53 (4)Mysql:      mysql-server-

C#实现二叉树 二叉链表结构

二叉链表存储结构: 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系. 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址.其结点结构为: 其中,data域存放某结点的数据信息:lchild与rchild分别存放指向左孩子和右孩子的指针,当左孩子或右孩子不存在时,相应指针域值为空(用符号∧或NULL表示).利用这样的结点结构表示的二叉树的链式存储结构被称为二叉链表,如图5-8所示. C#实现代码