本文主要是介绍5.4树,森林,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
5.4.1树的存储结构
可采用顺序存储结构or链式存储结构
要求能唯一的反映树中各节点之间的逻辑
1.双亲表示法
采用一端连续的空间来存储,同时在每个节点中增设一个伪指针,指示双亲节点在数组中的下标
优点:找双亲节点方便,找孩子不方便
attention:由于根节点无双亲节点,所以其双亲节点的坐标为-1;
双亲表示法的存储结构代码如下:
#include<stdio.h>;
#define maxsize 100
typedef struct {int data;//存储数据int parent;//双亲位置域
}PTnode;
typedef struct {PTnode nodes[maxsize];//双亲表示int n;//节点数
}PTree;
2.孩子表示法
将每个节点的孩子节点视为一个线性表
优点:找孩子方便,找双亲节点不方便
3.孩子兄弟表示法
孩子兄弟表示法又称二叉树表示法,以二叉链表作为树的存储结构
孩子兄弟表示法存储代码如下:
#include<stdio.h>;
typedef struct CSnode
{int data;//定义数据CSnode* firstnode, * nextsibling;//第一个孩子和右兄弟指针
}CSnode;
5.4.2树,森林与二叉树的转换
1.树转化为二叉树
2.森林转换为二叉树
3.二叉树转化为森林
5.4.3树和森林的遍历
1.树的遍历
先跟遍历与其对应的二叉树先序序列相同
后跟遍历与其对应二叉树的中序序列相同
2.森林的遍历
先序遍历森林与其对应的二叉树先序序列相同
后序遍历森林与其对应二叉树的中序序列相同
这篇关于5.4树,森林的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!