资源简介
广义表与森林相互转换,森林与二叉树相互转换,二叉树与遍历序列(先序/中序)相互转换,森林先根遍历和后根遍历
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
//存有孩子结点索引的单链表结点
typedef struct TreelinkNode
{
int index;
struct TreelinkNode *next;
} TreelinkNode*pTreelinkNode;
//孩子链表结点(树结点)
typedef struct TreeNode
{
pTreelinkNode link;
int data;
} TreeNode*pTreeNode;
//森林结点
typedef struct FTreeNode
{
pTreeNode tree;
struct FTreeNode *next;
} FTreeNode*pFTreeNode;
//森林链表的初始化操作
void InitFTree(pFTreeNode &fTree)
{
fTree = (pFTreeNode)malloc(sizeof(FTreeNode));
fTree->next = NULL;
}
//森林链表的插入操作
void InsertFTree(pFTreeNode &fTreepTreeNode node)
{
pFTreeNode t_node = fTree;
pFTreeNode newnode = (pFTreeNode)malloc(sizeof(FTreeNode));
while(t_node->next != NULL)
{
t_node = t_node->next;
}
newnode->tree = node;
t_node->next = newnode;
newnode->next = NULL;
}
//广义表建立树链表(孩子链表)
void GListToTree(pTreeNode &treeint ¤t_indexint parent_index)
{
char ch;
pTreelinkNode newnode;
pTreelinkNode link = (pTreelinkNode)malloc(sizeof(TreelinkNode));
link->index = current_index;
link->next = NULL;
tree[parent_index].link = link;
while(true)
{
scanf(“%c“&ch);
if(ch == ‘(‘)
{
parent_index = current_index;
current_index ++;
scanf(“%d“&tree[current_index].data);
tree[current_index].link = NULL;
GListToTree(treecurrent_indexparent_index);
}
else if(ch == ‘‘)
{
current_index ++;
scanf(“%d“&tree[current_index].data);
tree[current_index].link = NULL;
newnode = (pTreelinkNode)malloc(sizeof(TreelinkNode));
newnode->index = current_index;
newnode->next = NULL;
link->next = newnode;
link = link->next;
}
else
{
return;
}
}
}
//广义表组建立森林链表
void GListToFTree(pFTreeNode &fTree)
{
char ch;
int current_indexparent_index;
pTreeNode tree;
scanf(“%c“&ch);
while(ch != ‘#‘)
{
current_index = -1;
tree=(pTreeNode)malloc(50*sizeof(TreeNode));
current_index ++;
scanf(“%d“&tree[current_index].data);
tree[current_index].link = NULL;
scanf(“%c“&ch);
if(ch != ‘)‘)
{
parent_index = current_index;
current_index ++;
scanf(“%d“&tree[current_index].data);
tree[current_index].link = NULL;
GListToTree(treecurrent_indexparent_index);
scanf(“%c“&ch);
}
InsertFTree(fTreetree);
scanf(“%c“&ch);
}
}
//存储先序遍历序列记录的单链表结点
typedef struct linkNode
{
int data;
struct linkNode *next;
} linkNode*plinkNode;
//单链表的初始化
void InitlinkList(plinkNode &link)
{
link=(plinkNode)ma
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
I.A.... 14183 2012-03-22 22:13 树与二叉树\main.cpp
I..D... 0 2012-04-08 11:11 树与二叉树
----------- --------- ---------- ----- ----
14183 2
- 上一篇:用汇编编写的10个数的冒泡排序
- 下一篇:基于专家知识的决策树分类
相关资源
- C数据结构最小生成树的构造
- 决策树的R语言实现
- 数据结构关于二叉树的各种算法
- 数据结构-B树的完整实现
- OpenGL画树的代码
- 从数据库中加载树和动态添加树的节
- 线索二叉树的建立、删除、插入、恢
- 0-1 Knapsack 试设计一个用回溯法搜索
- 二叉树的构造与遍历
- 基于Huffman树的文件压缩C源码
- 信贷树决策树的金融行业应用
- IT笔试面试--B树/B+树/B-树/R树的详细解
- 数据结构课程设计之哈夫曼树的建立
- 基于决策树的手写体识别
- 哈夫曼树的构造、编码、译码实现
- 试设计一个用回溯法搜索排列空间树
- AVL树的查找、删除、插入
- 线索二叉树的建立遍历(非递归前中
- 二叉查找树的实现
- 广州大学 数据结构实验报告 实验二
- 树与二叉树的转换
- c编写的数据结构创建顺序表、链表、
- 多叉树的遍历,可以打印出树形结构
- huffman树的构造
- Erlang 四叉树的场景管理
- 广工数据结构课程设计实验-二叉树的
- 子集树问题 试设计一个用回溯法搜
- 论文研究 - 可可树的选择
- 基于故障树的煤矿排水泵故障分析
- 二叉排序树与平衡二叉树的实现
评论
共有 条评论