数据结构与算中树相关常见题型
2017-03-21 21:06
169 查看
1.已知二叉树的中序遍历是DBEAFC.前序遍历是ABDECF.后序遍历怎么算?
先理解前序和中序的涵义: 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,仍然先遍历左子树,再访问根结点,最后遍历右子树。 所以,前序遍历ABDECF中,A肯定是根节点(第一个遍历根节点)。对照中序遍历,就能知道 DBE是左子树,FC是又子树了。 然后分别研究左右子树: 1、左子树:中序DBE,前序是BDE;说明B是左子树的根节点,D是B的左孩子;E是右边的; 2、右子树类似:C是右子树的根节点,F是C的左孩子(因为在中序遍历中F时在C前面的,所以一定是左孩子;如果是右孩子的话中序遍历时就应该是在C后面了对吧) 所以后序遍历就是:DEBFCA. 再如:
eg:后序遍历为DBCEFGHA,中序遍历为EDCBAHFG,求前序遍历(网上例子) 解:首先 看后序遍历DBCEFGHA,A为总根节点 然后 寻找中序遍历EDCBAHFG中A位置,则EDCB在A的左枝,HFG在A的右枝; 重复前两步(不懂就多读两遍),从后序遍历最后一位找,在中序遍历寻找对应点,得出左右分枝... 最后得到AECDBHGF,再自己验证即可...
总结: (1)只能通过前序遍历和中序遍历得到后序遍历 或 通过中序遍历和后序遍历得到前序遍历,而不能通过前序遍历和后序遍历得到中序遍历。
(2)前序遍历特点: 第一个字母(节点)是根节点。
中序遍历特点: 根节点一般在中间(当然如果没有左子树或右子树就另当别论了)
后序遍历特点: 最后一个字母一定是根节点。
相关文章推荐
- 数据结构——链表(面试常见题型总结)
- 数据结构(一)顺序表3:顺序表常见题型
- 再读uclinux-2008r1(bf561)内核存储区域管理(1):相关数据结构
- 文件相关内核数据结构
- 数据结构及算法相关文章索引(持续更新)
- 数据结构中,关于“大小端”的数据存储方式的相关问题
- 数据结构相关名词
- 树型结构数据在关系数据库中用链式存储相关查询实现
- sql数据库常见的新建 删除 修改表结构及数据的语句
- 数据结构算法复习[栈操作相关]
- linux内存模型之buddy(伙伴)系统一概览及相关数据结构
- 常见数据库设计(4)——树形结构数据
- 文件相关内核数据结构
- 数据结构与算法学习之二叉树及二叉树的相关操作
- 数据结构与算法学习之队列及队列的相关操作
- 网络地址相关数据结构与函数
- 判断常见的数据库数据结构对象是否存在
- Linux0.11内核--进程相关数据结构
- 使用struts提交多行数据到list属性中的常见错误及相关知识
- 常见数据类型的存储结构