以前没有好好学数据结构现在需要补回来欠的账还是要还的。

不知道大家喜不喜欢看权利的游戏个人还是十分推荐看!十分好看!!!

看上图这么多人物如果你想要找某个人是不是很奔溃!!!

假如这个人自身含有一些信息。

假如你找的人是 “小恶魔” 提利昂·兰尼斯特(个人非常喜欢他)

兰尼斯特家族,父亲是泰温兰尼斯特,母亲是乔安娜兰尼斯特,姐姐是瑟曦·兰尼斯特,哥哥是詹姆·兰尼斯特。有了这些条件查找是不是特别快!!


那树有什么作用呢?

权利的游戏的家谱图按血缘关系族类记载,这样管理查找人是不是特别快!!!

所以树最大的作用就是查找


树的定义

定义参考https://blog.csdn.net/forwardyzk/article/details/53926282

树是n(n>=0)个结点的有限集合.当n=0时,集合为空,称为空树.在任意一颗非空树中,有且仅有一个特定的结点称为根.当n>1时,除根结点以外的其余结点可分成m(m>=0)个不相交的有限结点集合T1,T2….Tm.其中每个集合本身也是一棵树,称为根的子树.
其中:
(1)有且仅有一个称为根的结点:它没有前继结点,有0个或者多个后继结点.
(2)有若干个称为叶的结点:它们有且仅有一个前几节点,而没有后继结点.
(3)其余称为节的结点:它们有且仅有一个前继结点,至少有一个后继结点.

实际上,树表示了一组结点之间不同于线性表的前继和后继关系的数据结构.一般而言,树种任何一个结点只有一个前继(根结点除外),可以有多个后继(叶结点除外).


为什么树主要讲的是二叉树???

如下图一个树怎么表示呢?

如下图这样可以表示,但是如果有些结点的度是3、4、5那又怎么表示呢?结点又怎么定义呢?

孩子兄弟表示法来了

结点表示

调整一下

所以孩子兄弟表示法可以用二叉树表示任何树,这应该就是树这一章重点为什么讲二叉树吧!


二叉树

二叉树定义

二叉树 T:一个有穷的结点集合。这个集合可以为空。若不为空,则它是由两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。

五种基本形态

  1. 空二叉树
  2. 只有一个根结点
  3. 根结点只有左子树
  4. 根结点只有右子树
  5. 根结点既有左子树又有右子树。

二叉树的子树有左右顺序之分

特殊二叉树

斜二叉树

满二叉树

每层都结点都满

完全二叉树

有n个结点的二叉树,对树中结点按从上至下、从左到右顺序进行编号,编号为 i(1≤i ≤n) 结点与满二叉树中编号为 i 结点在二叉树中位置相同

二叉树几个重要性质

  1. 一个二叉树第 i 层最大结点数为:2^(i-1), i≥1
  2. 深度为k的二叉树有最大结点总数为:2^k -1, k≥1
  3. 对任何非空二叉树T,若 n0 表示叶结点的个数、n2 是度为 2 的非叶结点个数,那么两个满足关系 n0=n2+1

证明 n0=n2+1

假如在二叉树中 n0 表示叶结点个数,n1 表示度为 1 的结点个数,n2 表示度为 2 的结点个数。因为边数+1 等于结点数。

n1+2*n2+1=n0+n1+n2,所以 n0=n2+1

二叉树存储

顺序存储

链式存储

结点

二叉树遍历

先序、中序、后序、按层遍历

请看我这篇 二叉树遍历

总结

参考 数据结构ZJU 陈越姥姥

主要介绍了下树的一些基础知识,后面会再写 BST、AVL、RBT 等树。 以前没好好学,欠的账还是要还的,好好打基础,多问为什么?

才学疏浅,有什么问题请大家指出来。十分感谢!

发布了82 篇原创文章 · 获赞 164 · 访问量 15万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章