zoukankan      html  css  js  c++  java
  • 二叉树的三序遍历(转)

    转: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) 访问根节点; 这里写图片描述
  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5096788.html
Copyright © 2011-2022 走看看