【数据结构与算法】树和森林

树的存储结构
1.双亲表示法

//结点结构
typedef struct PTNode{
	TElemType data;
	int parent;     //双亲位置域
	}PTNode
//树结构
#define MAX_TREE_SIZE 100
typedef struct{
	PTNode nodes[MAX_TREE_SIZE];
	int r,n;   //根结点的位置和结点个数
	}PTree;

2.孩子链表(找孩子容易,找双亲难)

//孩子结点结构
typedef struct CTNode{
	int child;
	struct CTNode *next;
	}*ChildPtr;
//双亲节点结构
typedef struct{
	TElemType data;
	ChildPtr firstchild;  //孩子链表头指针
	}CTBox;
//树结构
typedef struct{
	CTBox nodes[MAX_TREE_SIZE];
	int n,r;    //结点数和根节点位置
}CTree

3.孩子兄弟表示法(二叉树表示法,二叉链表表示法)
用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点

typedef struct CSNode{
	ElemType data;
	struct CSNode *fistchild,*nextsibling;\
	}CSNode,*CSTree;

树的遍历(三种方式)
先根遍历、后根遍历、层次遍历
森林的遍历
先序遍历、中序遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值