可能是全网最透彻的讲解树的基本概念的一篇文章了。
对于很多朋友来说,特别是半路出家转码农的朋友来说,数据结构是最薄弱的一项了,线性表和链表还好理解(如果链表不懂的见我的另一篇文章https://blog.csdn.net/jigetage/article/details/88694867),一到树就完全懵逼了,甚至看不懂别的网友发的博客。大部分原因是不知道有关树的基本概念。这里总结出来,熟练背诵即可。
先说节点:
对于节点来说,有高度,深度,层数三个概念。
高度指的是从此节点开始到最下面叶子结点的长度,这个长度就是经历的节点的个数。
深度指的是从根节点开始到此节点的长度,这个长度也是经历的节点的个数。
对于节点来说,高度 != 深度。
但是,根节点的高度 == 最深的叶子结点的深度。
层数指的是该节点所处的位置,根节点为第1层,往下依次加1。
再说树本身:
树本身只有高度、深度两个概念。
对于树来说,高度 == 深度,高度和深度描述的是同一个东西,指的就是书中节点的最大层数,可以理解为层数最高的叶子结点的层数。即,树的高度 == 树的深度 == 树中最深的叶子结点的深度 == 树中根节点的高度。
补充:节点的度指的是此节点的子树的个数。