【数据结构】树

109 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第29天,点击查看活动详情 >>

前言

树是一种非线性存储结构,之前的链表与数组都属于线性存储结构。树是一种一对多的关系结构。

树的节点概念

  • 结点:每个存储的元素都是一个“结点”,结点是对树元素的统称。
  • 父节点、子节点、兄弟节点:可以将树想象成有好几层,第二层的元素由第一层拓展而来即这些元素是第二层元素的父节点。反之则是子节点,兄弟节点指的是平级关系。
  • 根节点:如果一个非空树没有父节点则称这个节点是这个树的根节点
  • 叶子节点:如果一个树没有任何子节点则称此节点是这个树的叶子节点。

子树与空树

  • 将一个整树拆分后所得到的就是子树,一个节点也可以被作为一个子树,根节点就是它本身。所以树可以这样定义:树是由根节点与若干个子树组成
  • 空树:如果一个树集合是空则这个被称为空树,空树没有节点

节点的度和层次

某个节点的度就是节点的分支,有几个分支就有几个度。每个分支也是每个子树 层次即一棵树的最大高度。从上到下。

有序树与无序树

节点的最左边的子树称为“第一个孩子”,最右边的称为 “最后一个孩子”如果节点是按照顺序排列的 则称为有序树,反之则是无序树

二叉树

什么是二叉树?

  • 本身是有序树
  • 各个节点的度不能超过2

二叉树的性质

  • 二叉树中,第i层最多有2的i-1次方的节点
  • 如果二叉树的深度为k,则这颗树最多有2的k次方-1个节点
  • 二叉树中,叶子节点数等于度为2的节点数+1

二叉树又可以继续分类 衍生出满二叉树与完全二叉树