【数据结构复习】是学习、复习常用数据结构系列文章。数据结构与算法密不可分,是程序实现功能的重要组成部分。优秀的数据结构可以提高算法的时间及空间效率。反之,将增加算法复杂度,甚至妨碍程序的正确执行。

一、引言

先从微软2014校招的一道笔试题是说起。如下
来源:http://blog.csdn.net/xiaoerlyl/article/details/12126807 第4题。
which of the following sequence(s) could not be a postorder tree walk result of a binary search tree?

A. 1,2,3,4,5  B. 3,5,1,4,2  C. 1,2,5,4,3  D. 5,4,3,2,1

题目中要求题肢中哪(几)项是不可能是二叉查找树的后序遍历。
对此题,你必须先有二叉查找树及其遍历的知识。二叉查找树是这样的二叉树,对于任一个子树,其元素必有:左节点<根节点<右节点。
解法:由于该树元素较少,可以采用排除法。利用后序遍历的性质,试出有可能的树,排除掉成立的项,剩下的就是答案。
答案:B
符合条件A、D的树很好找,如下。

问题是C的排除。根据后序遍历的性质,最后遍历到的必是根节点。即3是根。为了安排1,2,可以如下图:

最后安排5,4,有如下两种可能。明显右图才是符合的。

这样,C项也成立了。答案是选B。

当然,我们仔细分析B项,根节点是2,那么其左节点必然是1。如此一来,根据后序遍历,元素1必定被首先访问。结果,它却出现在第三位。

下面详细讲解二叉树的遍历

二、二叉树的遍历
众所周知二叉树有三种遍历方法,称为前序(pre-order)、中序(middle-order)及后序(post-order)。分别记以NLR、LNR、LRN。其中N是指当前子树的根节点。
三者的定义可以参考google、百科、wiki,但是大部分文字的描述都让人难以理解。现见最简明直观的介绍当属该站点:
http://student.zjzk.cn/course_ware/data_structure/web/shu/shu6.3.2.htm
本文将进一步阐明具体的访问路由,并配图说明到底如何遍历。
(1)首先,对于一个给定的二叉树,将其补充成满树,且每个叶节点都是空“φ”

(2)三种遍历方法的路由都是一样的,对于树中的每一条边,先按从父到子走过其左半边(halfedge),一直到围过空叶节点,再从子到父经走过右半边。

(3)如图示,每条半边的箭头指向一个节点,称该节点“被访问”。易见,树中除了叶节点,每个节点被访问三次。分别标记三次访问的半边为红、绿、蓝色。

(4)按路由顺序取每个节点的第一次被访问,就得前序遍历序列。即,取所有红半边的箭头。对于中序、后序,分别按第二次和第三次被访问顺序,即分别取绿箭头、蓝箭头即可。因此,三种序列的结果分别为
前序序列:A B D C E F
中序序列:D B A E C F
后序序列:D B E F C A

三、三种遍历的特点(不断更新)
掌握三种遍历的特点可为解二叉树题型提供方便。本节将持续更新。
前序:
1、全树根节点必在序列首位。
中序:
1、全树最左下角节点必在序列首位,最右下角节点必在序列末位。如果是查找二叉树,所得序列必是递增数列。
2、可以通过投影法求得。
后序:
1、全树根节点必在序列尾。

【版权声明:
1、本人对本博客内所有原创文章享有版权,转载请注明作者本人,并以链接形式注明出处。
2、侵犯本人版权相关利益者,个人会在新浪微博、CSDN博客中永久追踪及谴责。同时,保留追究法律责任的权利。向您的厚道致谢。
gwf
初稿 2013.10.1】

【数据结构复习】二叉树的遍历——从微软2014校园招聘说起相关推荐

  1. 微软2014校园招聘笔试试题

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/12190807 1.Which statement(s) is(are) ...

  2. 微软2014校园招聘笔试题

  3. 2014校园招聘_百度2014校园招聘

    1.百度2014 校园招聘简介:  百度(Nasdaq 简称:BIDU) 是全球最大的中文搜索引擎,2000年1 月由李彦宏.徐勇两人 创立于北京中关村,致力于向人们提供"简单,可依赖&qu ...

  4. 百度2014校园招聘笔试面试汇总

    目 录 1. 百度笔试 2 1.1百度2014校园招聘笔试题(成都站,软件研发岗) 2 1.2  2013百度校园招聘-机器学习和数据挖掘工程师-笔试题 7 1.3  百度2014校园招聘 技术研发题 ...

  5. 阿里巴巴集团2014校园招聘笔试题(9月22北京)

    阿里巴巴集团2014校园招聘笔试题 (9月22北京) (答案仅是个人见解,欢迎补充更正,谢谢) 第一部分 单选题(前10题,每题2分:后10题,每题3分.选对得满分,选错倒扣1分,不选得0分) 1.一 ...

  6. 阿里巴巴集团2014校园招聘笔试题------9-22北京 研发工程师

    转自 http://blog.sina.com.cn/s/blog_6f83fdb40101eyzw.html 阿里巴巴集团2014校园招聘笔试题---研发工程师 (9月22北京) (答案仅是个人 ...

  7. 暴风影音2014校园招聘笔试题目-技术D卷

    /*暴风影音2014校园招聘笔试题目-技术D卷.6. m*n的网格从左上角A点走到右下角B点,每次可走一格,只能往右或下走.输出有多少种走法和所有路线数. */ #include <cstrin ...

  8. 华为2014校园招聘的机试题目

    华为2014校园招聘的机试题目和2013年的完全一样. 一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的 ...

  9. 微软2016校园招聘9月在线笔试题解

    微软2016校园招聘9月在线笔试题解 题目网址列表:http://hihocoder.com/contest/mstest2015sept2/problems 题目一分析: 问题描述:在二维坐标系中, ...

最新文章

  1. 从原理到实现,详解基于朴素ML思想的协同过滤推荐算法
  2. 安全之美(英文影印版)
  3. tensorflow和python先学哪个-前辈说先学会了这些Python知识点,再谈学习人工智能!...
  4. 页面金额显示两位小数点问题
  5. 【干货下载】金融大数据专场沙龙内容分享
  6. 基于Flink的高可靠实时ETL系统
  7. react Native 环境安装配置——图解版一目了然
  8. 前端学习(3290):object.define3
  9. java indexof_Java Vector indexOf()方法与示例
  10. C 语言实例 - 判断三边能否构成三角形
  11. C#LeetCode刷题之#443-压缩字符串​​​​​​​(String Compression)
  12. 【python】【openCV】分水岭算法
  13. 贺利坚老师汇编课程26笔记:LOOP指令使用再议
  14. 今日GitHub热榜第一:最全中华古诗词数据库,收录30多万诗词
  15. 华为HCIE云计算之FC添加ipsan数据存储
  16. idea的设置,导致list长度只有1000
  17. 日记侠:你的第一桶金可能就是个关键词
  18. css三角形的IE兼容写法
  19. 教师节快乐:带大家回顾这十位大师笔下的教师!
  20. 冰刃(IceSword)的使用方法(基础篇)

热门文章

  1. 真实案例详述:丢手机太危险了
  2. matlab cbfreeze,Matlab:如何在同一图中为不同的表面指定不同的色图/色块
  3. ios 裁剪框大小_iOS自定义裁剪图片比例尺寸,图片自动旋转解决办法
  4. 什么是云服务器ECS?云服务器ECS详解
  5. CSS 渐变色 (超好看)
  6. java eden_java eden 大小
  7. 中兴通讯事件的警示和教训
  8. Python哔哩哔哩弹幕爬取+词云生成
  9. LG OLED C8电视评测:3.9mm超薄机身前置扬声
  10. 在CMD下使用sc命令,报openservice failed 1060错误