树的定义

  1. 有且只有一个根节点
  2. 有若干个互不相交的子树,这些子树本身也是一棵树。

树的分类

一般树:

  • 任意一个节点的子节点的个数不受限制

二叉树:

  • 任意一个节点的子节点不超过两个
    • 一般二叉树
    • 满二叉树:每一层上的节点数都是最大节点数
    • 完全二叉树:删除满二叉树最底层最右边的连续若干个节点后形成的二叉树。

森林:

  • n个互不相交的树的集合。

树的存储

二叉树的存储

连续存储(完全二叉树)

优点:查找某个节点的子节点和父节点很快。

缺点:耗用内存大。

链式存储

优点:耗用内存少。

缺点:不易访问父节点。

一般树的存储

双亲表示法:用连续的空间来存储每个节点,每个节点存储其父节点的下标,根节存储的数组下标为-1

孩子表示法:将每个节点的子节点都用单链表连接起来,n个节点具有n个孩子链表。

孩子双亲表示法:每个节点同时储存父节点的下标和用链表连接的子节点。

二叉树表示法:

  • 把一个普通树转化成二叉树储存。
  • 左指针域指向第一个子节点,右指针域指向该节点的兄弟。

森林的存储

  • 把森林转化成二叉树存储。
  • 把每个树的根节点当成兄弟处理,其余与一般树转换二叉树相同。

二叉树的操作

遍历

先序遍历:(先访问根节点)

  • 先访问根节点。
  • 再先序访问左子树。
  • 再先序访问右子树。

中序遍历:(中间访问根节点)

  • 先中序遍历左子树。
  • 再访问根节点。
  • 再中序遍历右子树。

后序遍历:(最后访问根节点)

  • 险中序遍历左子树。
  • 再中序遍历右子树。
  • 最后访问根节点。

已知两种遍历序列还原原始二叉树:

  • 只通过先序和中序,或只通过中序和后序可以唯一确定一个二叉树。
  • 不可只通过先序和后序确定。
posted @ 2025-10-13 23:59  单身喵  阅读(8)  评论(0)    收藏  举报