数据结构与算法分析(c语言)--树

参考《数据结构与算法分析-c语言描述》一书。

1、树的基本知识

根:没有父亲的节点。
树叶:没有儿子的节点叫做树叶,或者叶子结点。
兄弟:具有相同父亲的节点成为兄弟节点。
路径:从节点A到节点B的一个序列,该序列上任意相邻两个点是父子关系。
路径的长:路径上边的条数。
深度:对每一个节点A,A的深度是从根到A的唯一路径的长。
高度:一个树的高度是树到叶子结点最大的路径长度。

2、树的实现

实现树的一种方法可以是在每一个节点除数据外还有一些指针,使得该节点的每一个儿子都有一个指针指向它。然后,由于每个节点的儿子数可以变化并且事先不知道,因此在数据结构中建立到各儿子节点直接的链接是不可行的,因为这样会产生太多的浪费空间。实际上解法很简单:将每个节点的所有儿子都放在树节点的链表中:

#include 
#include 

typedef struct TreeNode * PtrToNode;

struct TreeNode
{
    int Element;
    PtrToNode FirstChild;
    PtrToNode NextSibling;
};
数据结构与算法分析(c语言)--树_第1张图片

这种表示方法想要得到如上图所示A节点的所有子节点,只需要通过FirstChild找到B节点,根据B节点的NextSibling找到B所有的兄弟节点即可。

如果你喜欢我写的文章,可以帮忙给小编点个赞或者加个关注,我一定会互粉的!
如果大家对数据结构感兴趣,欢迎跟小编进行交流,小编微信为sxw2251,加我要写好备注哟!:


数据结构与算法分析(c语言)--树_第2张图片
我的微信

你可能感兴趣的:(数据结构与算法分析(c语言)--树)