数据结构----树的基本概念

之前学到的链表、队列、栈等结构都是线性结构,也就是一个结点的前后最多各有一个结点。但是树就不一样了,除了树根结点 (root) 没有父节点之外,其它结点都有一个父节点,可能有0个、1个或多个子节点。就是因为这种一对多的特殊结构,导致了树状结构的复杂性、以及算法的特殊性。树的两个特性:1、任意两个结点之间都有唯一的一条路径相连接;2、树中没有回路,也就是没有环状结构。
下面把树和各种类型的树进行完整的图示介绍。看到这个图是不是有一种眩晕的感觉,其实不用怕,这个章节并不难。

在这里插入图片描述
对于我们来说最重要的是二叉树。二叉树与一般的树的区别:二叉树中的任意一个结点,它的子节点最多只有2个。而一般的树的一个结点可以有任意多个子结点。二叉树中有一类特别的树----斜树 (左斜树、右斜树)。左斜树、右斜树跟之前学的链表非常相似,这里就不细说了。

在这里插入图片描述二叉树中有一种特殊的形式:完全二叉树。完全二叉树中又分为堆和满二叉树。
下图中,左边的是一般的二叉树。中间的是满二叉树。满二叉树就是从根节点到倒数第二层为止,每一个结点都有两个子节点,而且所有的叶子结点 (没有子节点的结点) 一定只在最下面一层。右边的是完全二叉树。完全二叉树中,根节点到倒数第二层结点一定可以构成一个满二叉树,最下面一层的叶子结点一定都在最左边,所有叶子结点中不存在空位。满二叉树一定是完全二叉树。

在这里插入图片描述在这里插入图片描述
好了,现在我们可以开始介绍树的一些算法了。

猜你喜欢

转载自blog.csdn.net/wangeil007/article/details/107515483