C语言算法—树、二叉树、堆

树:

首先我们先认识树是什么:
在这里插入图片描述
在这里插入图片描述
向上图这样的就叫做树

树的的特点:

1.一个树的任意两个结点有且仅有唯一的一条路径相通。
2.一个树如果有n个结点,那么它一定恰好有n-1条边
3.在一个树中加一条边会构成一个回路。

二叉树:

我们以这张图为例:
在这里插入图片描述
每个树都有一个特殊的结点我们称为根结点,例如上图的A。一个树有且仅有一个根节点。树中还有父结点和子结点,上图中的B就是D和E的父结点而D和E就是B的子结点,还有一个结点成为叶节点,所谓叶节点就是一个结点它没有子结点,例如上图的H、E、F、G。根节点我们也可以理解为没有父结点。

而二叉树是什么呢?
二叉树是一种特殊的树,它的特点是:每个结点最多有两个子结点。更加严格的递归定义是:二叉树要么为空,要么由根节点、左子树、右子树组成,而左子树和右子树分别是一颗二叉树。例如下图:
在这里插入图片描述
在这里插入图片描述

堆是什么呢?

在这里插入图片描述
堆是一种特殊的完全二叉树:所有的父结点都比子结点要小(圆圈内的是值)。

发布了9 篇原创文章 · 获赞 5 · 访问量 5340

猜你喜欢

转载自blog.csdn.net/weixin_45832286/article/details/104138856