/*
DJ.W 2012.12.06
代码功能: 将一个邻接表图转换为孩子兄弟法表示的二叉树
*/
#include <iostream>
#include <string.h>
using namespace std;
//=====Queue===============================================================================================
//队列结构:基于数组的循环队列
//元素类型:整型
typedef struct _Queue
{
int *pElemt; //数据区
int front; //指向队列首部元素
int tail; //指向当前队列尾部元素的下一个位置
int max_elemt; //最大元素个数 由使用者指定
bool bFull; //队列满标识
bool bEmpty; //队列空标识
}Queue;
//队列初始化 front为出口 tail为入口
void InitQueue(Queue &queue, const int max_element)
{
queue.pElemt = new int[max_element];
// ASSERT(queue.pElemt != NULL);
queue.front = 0;
queue.tail = 0;
queue.max_elemt = max_element;
queue.bFull = false;
queue.bEmpty = true;
}
//入队列 注意判满和标识非空
bool EnQueue(Queue &que, const int elemnt)
{
if (que.bFull)
return false;
que.pElemt[que.tail] = elemnt;
que.tail = (++que.tail)%que.max_elemt;
if (que.tail == que.front)
que.bFull = true;
que.bEmpty = false;
return true;
}
//出队列 注意判空并标识非满
bool OutQueue(Queue &que, int& element)
{
if (que.bEmpty)
return false;
element = que.pElemt[que.front];
que.front = (++que.front)%que.max_elemt;
if (que.front == que.tail)
que.bEmpty = true;
que.bFull = false;
return true;
}
//判空
bool QueueEmpty(Queue& que)
{
return que.bEmpty;
}
//销毁队列 ***
void DeQueue(Queue que)
{
delete []que.pElemt;
que.pElemt = NULL;
}
//=====Tree=========================================================================================
typedef struct _Tree
{
string strData;
struct _Tree* pLeftChild;
struct _Tree* pRightSib;
}TreeNo
将邻接表表示的图转换为孩子兄弟法表示的二叉树
最新推荐文章于 2022-08-05 22:59:16 发布
本文详细介绍了如何将用邻接表表示的图转换为孩子兄弟法表示的二叉树,涉及图的遍历和二叉树结构的构建技巧,适合数据结构与算法学习者深入理解。
摘要由CSDN通过智能技术生成