二叉树总结

来源:互联网 发布:spss软件下载 官方 编辑:程序博客网 时间:2024/06/07 11:27
   关于二叉树问题,由于其本身固有的递归属性,通常我们可以用递归算法来解决。遍历是二叉树各种操作的基础,可以在遍历过程中对结点进行各种操作。

一、二叉树的遍历

  由二叉树的定义可知,一颗二叉树由根节点及左、右子树三个基本部分组成,因此,只要依次遍历这三部分,就可以遍历整个二叉树。

  1.先序遍历:

  先序遍历的递归过程为:若二叉树为空,遍历结束。否则,

  (1)访问根节点;

  (2)先序遍历根节点的左子树;

  (3)先序遍历根节点的右子树。

  2.中序遍历:

  中序遍历的递归过程为:若二叉树为空,遍历结束。否则,

  (1)中序遍历根节点的左子树;

  (2)访问根节点;

  (3)中序遍历根节点的右子树。

  3.后序遍历:

  后序遍历的递归过程为:若二叉树为空,遍历结束。否则,

  (1)后序遍历根节点的左子树;

  (2)后序遍历根节点的右子树;

  (3)访问根节点。

  层次遍历:

  二叉树的层次遍历,是指从二叉树的第一层(根结点)开始,从上至下逐层遍历,在同一层中,则按从左到右的顺序对结点逐个访问。在进行层次遍历时,对一层结点访问完后,再按照它们的访问次序对各个结点的左孩子和右孩子顺序访问,这样一层一层进行,先遇到的结点先访问,这与队列的操作原则比较吻合。因此,在进行层次遍历时,可设置一个队列结构,遍历从二叉树的根结点开始,首先将根结点指针入队列,然后从对头取出一个元素,每取一个元素,执行下面两个操作:

  (1)访问该元素所指结点;

  (2)若该元素所指结点的左、右孩子结点非空,则将该元素所指结点的左孩子指针和右孩子指针顺序入队。

  此过程不断进行,当队列为空时,二叉树的层次遍历结束。

二、题目总结

  1、基于二叉树遍历的递归算法

  这类题目的特点是直接根据三种递归算法改写,修改访问语句来实现。

  2、基于二叉树层次遍历的算法

  3、基于顺序存储的二叉树遍历算法

  4、其他二叉树遍历算法,如:左、右子树交换等。

0 0
原创粉丝点击