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

参考《数据结构与算法分析-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,加我要写好备注哟!:


我的微信
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,585评论 0 25
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 6,921评论 0 3
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 11,099评论 0 19
  • 目录 0.树0.1 一般树的定义0.2 二叉树的定义 1.查找树ADT 2.查找树的实现2.1 二叉查找树2.2 ...
    王侦阅读 12,103评论 0 3
  • 距离大年初一只有一天。 几乎所有的贺岁片都已经提前让媒体看片,影评反馈一篇接着一篇。 《乘风破浪》《功夫瑜伽》《大...
    Sir电影阅读 4,969评论 2 6