参考《数据结构与算法分析-c语言描述》一书。
1、树的基本知识
根:没有父亲的节点。
树叶:没有儿子的节点叫做树叶,或者叶子结点。
兄弟:具有相同父亲的节点成为兄弟节点。
路径:从节点A到节点B的一个序列,该序列上任意相邻两个点是父子关系。
路径的长:路径上边的条数。
深度:对每一个节点A,A的深度是从根到A的唯一路径的长。
高度:一个树的高度是树到叶子结点最大的路径长度。
2、树的实现
实现树的一种方法可以是在每一个节点除数据外还有一些指针,使得该节点的每一个儿子都有一个指针指向它。然后,由于每个节点的儿子数可以变化并且事先不知道,因此在数据结构中建立到各儿子节点直接的链接是不可行的,因为这样会产生太多的浪费空间。实际上解法很简单:将每个节点的所有儿子都放在树节点的链表中:
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode * PtrToNode;
struct TreeNode
{
int Element;
PtrToNode FirstChild;
PtrToNode NextSibling;
};
这种表示方法想要得到如上图所示A节点的所有子节点,只需要通过FirstChild找到B节点,根据B节点的NextSibling找到B所有的兄弟节点即可。
如果你喜欢我写的文章,可以帮忙给小编点个赞或者加个关注,我一定会互粉的!
如果大家对数据结构感兴趣,欢迎跟小编进行交流,小编微信为sxw2251,加我要写好备注哟!: