【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)

前言

终于到了之前C语言没有讲过的数据结构了,那就是二叉树了,关于二叉树的学习难度确实比前面学习的数据结构都要难一点,所以我们这个关于二叉树的博客大概率是有好几篇的。如有哪里出现错误也欢迎指出唔。

二叉树的概念

Java 中的二叉树是一种基础的数据结构,它是由节点组成的树形结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树的节点通常包含三个部分:节点的数据域、指向左子节点的指针和指向右子节点的指针。

我们通常把没有父节点(双亲节点)的节点叫做根节点,平常说的”这个根“,”它的根“中的根就是值根节点。

比如上面的”1“为整个树的根节点,也可以说”4“是 5和6的根因为其实4,5,6也可以说其组成了一棵树,组成的这棵树我们叫做子树。

二叉树的性质:
  1. 定义性:二叉树是节点的集合,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。
  2. 层级性:二叉树的节点按照层次排列,根节点位于第一层,其子节点位于第二层,以此类推。
  3. 有序性:在二叉搜索树(Binary Search Tree, BST)中,每个节点的值都大于(或等于)其左子树中所有节点的值,并且小于(或等于)其右子树中所有节点的值。
  4. 递归性:二叉树可以递归地定义为:一个节点(包含数据域和两个指向子树的指针域)或者为空。
  5. 树的深度:二叉树的深度是根节点到最远叶子节点的最长路径上的边数。
  6. 节点的度:一个节点的度是指该节点拥有的子节点数量。在二叉树中,节点的度最大为2。
  7. 树的广度:二叉树的广度是指树的层数。
  8. 叶子节点:二叉树中没有子节点的节点称为叶子节点或外部节点。
  9. 内部节点:至少有一个子节点的节点称为内部节点。
  10. 树的高度:二叉树的高度是从根节点到任意叶子节点的最长路径上的边数。
  11. 子树:任何一个节点及其所有后代构成的二叉树称为该节点的子树。
  12. 兄弟节点:具有相同父节点的节点称为兄弟节点。
  13. 祖先节点:从根到该节点所经过的节点序列称为该节点的祖先。
  14. 后代节点:以某节点为根的子树中的任一节点都称为该节点的后