二叉树的三序遍历(转)

转:http://www.cnblogs.com/pacoson/p/4898947.html

【0】README

0.1)本文旨在理清二叉树的先中后序遍历, 以及如何建立二叉树等相关内容; 0.2)本文涉及代码均为原创; 0.3)本文中遍历后的打印结果,朋友您可以直接写出二叉树的节点构造出来; Attention):

    • A1)要建立二叉树或者普通树, 这就涉及到插入节点的问题; 进而涉及到找到插入到哪个父节点的哪个孩子问题(left or right);当然,我们可以抽取一个 find 方法出来找出父节点, find 方法的关键是 首先要对是否为空树进行测试;
  • A2) 而且,你要知道,在后面的二叉查找树的 插入方法insert 和 我们的 二叉树或者普通树的插入方法是不同的, 因为二叉查找树的定义是 :“该树中的每个节点 X, 它的左子树中所有关键字值 小于 X 的关键字值, 而它的右子树中所有关键字值大于 X 的关键字值”; 换句话说,在二叉查找树中,节点之间是有大小关联的, 而在二叉树和其它普通树中,节点间的数值大小是没有关系的,任意的 (特别要注意)


    【1】二叉树相关概念

    1.1)定义:二叉树是一颗树,其中每个节点都不能有多余两个儿子; 这里写图片描述 1.2)重要性质:平均二叉树的深度要比N小得多(N是该二叉树的节点个数); 这里写图片描述


    【2】二叉树的表示方法说明:

    2.1)树一般画成圆圈并用一些直线连接起来,因为二叉树实际上就是图,但涉及到树时, 我们也不明显地画出 NULL 指针,因为具有N个节点的每一个二叉树都将需要 N+1 个 NULL 指针; 2.2)为什么是N+1个NULL 指针? 因为N个节点==2N个指针==N-1条边;故余下N+1条边为 NULL , 即N+1个指针为NULL;(除根节点root外,每个节点都对应一条边)


    【3】对二叉树的先序 + 中序 + 后序遍历

    Attention)对于二叉树的遍历,我们的简单想法是, 遍历后的结果,我可以画出该二叉树节点的构造; 3.1)先序遍历步骤:如果二叉树为空树, 则什么都不做; 否则:

  • step1)访问根节点;
  • step2)先序遍历左子树;
  • step3)先序遍历右子树; 这里写图片描述

3.2)中序遍历步骤:如果二叉树为空树, 则什么都不做; 否则:

    • step1)中序遍历左子树;
  • step2)访问根节点;
  • step3)中序遍历右子树; 这里写图片描述

3.3)后序遍历步骤:如果二叉树为空树, 则什么都不做; 否则:

    • step1) 后序遍历左子树;
  • step2) 后序遍历右子树;
  • step3) 访问根节点; 这里写图片描述
原文地址:https://www.cnblogs.com/handsomecui/p/5096788.html