完整二叉树实例程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

包含二叉树的顺序存储,插入,删除结点,以及设置root结点,和前序、中序、后序、按层次遍历的完成代码。

#include

#include

#include

#define QUEUE_MAXSIZE 50

using namespace std;

typedef struct CTree

{

char data;

struct CTree *left;

struct CTree *right;

}CBTree;

CBTree *BTreeInit(CBTree *node)

{

if(node != NULL)

return node;

else

return NULL;

}

int BTreeAddNode(CBTree *bt,CBTree *node,int n) {

if(bt==NULL)

{

cout<<"no parent!"<

return 0;

}

switch(n)

{

case 1:

if(bt->left)

{

cout<<"the left is existing."<

return 0;

}

else

bt->left=node;

break;

case 2:

if(bt->right)

{

cout<<"the right is existing."<

return 0;

}

else

bt->right=node;

break;

default:

cout<<"it's wrong!"<

return 0;

}

return 1;

}

CBTree *BTreeLeft(CBTree *bt) {

if(bt)

return bt->left;

else

return NULL;

}

CBTree *BTreeright(CBTree *bt)

{

if(bt)

return bt->right;

else

return NULL;

}

int BTreeIsempty(CBTree *bt) {

if(bt)

return 0;

else

return 1;

}

int BTreeDepth(CBTree *bt) {

int dep1,dep2;

if(bt==NULL)

return 0;

else

{

dep1=BTreeDepth(bt->left);

dep2=BTreeDepth(bt->right);

if(dep1>dep2)

return dep1+1;

else

return dep2+1;

}

}

CBTree *BTreeFind(CBTree *bt,char data) {

CBTree *p;

if(bt==NULL)

return NULL;

else

{

if(bt->data == data)

return bt;

else

{

if(p=BTreeFind(bt->left,data))

return p;

else if(p=BTreeFind(bt->right,data))

return p;

else

return NULL;

}

}

}

void BTreeClear(CBTree *bt)

{

if(bt)

{

BTreeClear(bt->left);

BTreeClear(bt->right);

free(bt);

bt=NULL;

}

return;

}

void BTree_pre(CBTree *bt)

{

{

cout<data<<" ";

BTree_pre(bt->left);

BTree_pre(bt->right);

}

return;

}

void BTree_mid(CBTree *bt) {

if(bt)

{

BTree_mid(bt->left);

cout<data<<" ";

BTree_mid(bt->right);

}

return;

}

void BTree_post(CBTree *bt) {

{

BTree_post(bt->left);

BTree_post(bt->right);

cout<data<<" ";

}

return;

}

void BTree_level(CBTree *bt)

{

CBTree *p,*q[QUEUE_MAXSIZE];

int head=0,tail=0;

if(bt)

{

tail=(tail+1)%QUEUE_MAXSIZE;

q[tail]=bt;

}

while(head != tail)

{

head=(head+1)%QUEUE_MAXSIZE;

p=q[head];

相关文档
最新文档