二叉树

二叉树(Binary Tree)——是n(n >= 0)个结点所构成的集合,它或为空树( n = 0 );或为非空树,对于非空树T:

  • 有且仅有一个称之为根的结点
  • 除根以外的其余结点分为两个互不相交的子集T1和T2,分别称为T的左子树和右子树,且T1和T2本身又是二叉树

java 三叉链二叉树 二叉树 三叉树_二叉树

java 三叉链二叉树 二叉树 三叉树_子树_02

二叉树的特点与树的异同

java 三叉链二叉树 二叉树 三叉树_子树_03

java 三叉链二叉树 二叉树 三叉树_子树_02

二叉树的几种形态

java 三叉链二叉树 二叉树 三叉树_二叉树_05

java 三叉链二叉树 二叉树 三叉树_子树_02

三结点二叉树的五种形态

java 三叉链二叉树 二叉树 三叉树_java 三叉链二叉树_07

java 三叉链二叉树 二叉树 三叉树_子树_02

二叉树性质

java 三叉链二叉树 二叉树 三叉树_二叉树_09

java 三叉链二叉树 二叉树 三叉树_子树_02

java 三叉链二叉树 二叉树 三叉树_java 三叉链二叉树_11

java 三叉链二叉树 二叉树 三叉树_子树_02

java 三叉链二叉树 二叉树 三叉树_结点_13

java 三叉链二叉树 二叉树 三叉树_子树_02

二叉树的链式存储结构

java 三叉链二叉树 二叉树 三叉树_子树_15

java 三叉链二叉树 二叉树 三叉树_子树_02

三叉链表存储结构

java 三叉链二叉树 二叉树 三叉树_二叉树_17

java 三叉链二叉树 二叉树 三叉树_子树_02

二叉树的遍历

遍历的作用:是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心

按照某条搜索路线遍访每一个结点且不重复(又称为周游)

遍历二叉树——从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点均被访问一次且仅被访问一次

前序遍历

操作定义:

如二叉树为空,则不操作,否则

  • 访问根结点
  • 前序遍历左子树
  • 前序遍历右子树

特点:第一位一定是根结点

心法口技—— >根- 左 - 右

中序遍历

操作定义: 如二叉树为空,则空操作;否则:

  • 中序遍历左子树
  • 访问根结点
  • 中序遍历右子树

特点:根结点必在中间

心法口诀: 左 - 根 - 右

后序遍历

操作定义:

如二叉树为空 ,则空操作;否则:

  • 后序遍历左子树
  • 后序遍历右子树
  • 访问根结点

特点: 最后一位一定是根结点