• 二叉树的三序遍历(转)


    转: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) 访问根节点; 这里写图片描述
  • 相关阅读:
    习题2-4 求交错序列前N项和 (15分)
    015_Web WPI
    014_捆绑包与显示模式
    013_模型验证
    012_模型绑定
    011_URL和Ajax辅助器方法
    010_模板辅助器方法
    009_辅助器方法
    008_视图
    007_控制器可扩展性
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5096788.html
Copyright © 2020-2023  润新知