C++基础知识点遗忘二字符与树的遍历节点判断
2015-04-16 10:38
288 查看
1.关于转义字符
char a='\72' 并不会报错 7代表的是八进制 \o72 代表冒号: 如果是\92就会出错 十进制
2.前序和中序遍历,如何求后序遍历呢?比如,已知一棵树的前序遍历是”GDAFEMHZ”,而中序遍历是”ADEFGHMZ”应该如何求后续遍历?
第一步,root最简单,前序遍历的第一节点G就是root。
第二步,观察前序遍历GDAFEMHZ,除了知道G是root,剩下的节点必然是root的左右子树之外,没法找到更多信息了。
第三步,观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。
第四步,观察左子树ADEF,左子树的中的根节点必然是树的root的leftchild。在前序遍历中,树的root的leftchild位于root之后,所以左子树的根节点为D。
第五步,同样的道理,root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中,一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树,并且遍历的右子树的第一个节点就是右子树的根节点。
如何知道哪里是前序遍历中的左子树和右子树的分界线呢?通过中序遍历去数节点的个数。
在上一次中序遍历中,root左侧是A、D、E、F,所以有4个节点位于root左侧。那么在前序遍历中,必然是第1个是G,第2到第5个由A、D、E、F过程,第6个就是root的右子树的根节点了,是M。
char a='\72' 并不会报错 7代表的是八进制 \o72 代表冒号: 如果是\92就会出错 十进制
2.前序和中序遍历,如何求后序遍历呢?比如,已知一棵树的前序遍历是”GDAFEMHZ”,而中序遍历是”ADEFGHMZ”应该如何求后续遍历?
第一步,root最简单,前序遍历的第一节点G就是root。
第二步,观察前序遍历GDAFEMHZ,除了知道G是root,剩下的节点必然是root的左右子树之外,没法找到更多信息了。
第三步,观察中序遍历ADEFGHMZ。其中root节点G左侧的ADEF必然是root的左子树,G右侧的HMZ必然是root的右子树。
第四步,观察左子树ADEF,左子树的中的根节点必然是树的root的leftchild。在前序遍历中,树的root的leftchild位于root之后,所以左子树的根节点为D。
第五步,同样的道理,root的右子树节点HMZ中的根节点也可以通过前序遍历求得。在前序遍历中,一定是先把root和root的所有左子树节点遍历完之后才会遍历右子树,并且遍历的右子树的第一个节点就是右子树的根节点。
如何知道哪里是前序遍历中的左子树和右子树的分界线呢?通过中序遍历去数节点的个数。
在上一次中序遍历中,root左侧是A、D、E、F,所以有4个节点位于root左侧。那么在前序遍历中,必然是第1个是G,第2到第5个由A、D、E、F过程,第6个就是root的右子树的根节点了,是M。
相关文章推荐
- python基础知识==各类型转换及遍历(字符,list,字典)
- Python编程中常用的12种基础知识,其中肯定有你不会的! 0 1、正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串 0 2、遍历目录方
- 判断回文 字符串的最后一个字符是'/0', 而不是'/n' ,基础知识都忘了
- C++ 模板基础知识
- 黑马程序员——基础知识——字符流
- 编程基础知识——C/C++字符串和字符数组
- C++基础知识—常量和常成员函数
- C++基础知识(修正)
- c++基础知识拾遗
- 用c++实现红黑树的判断、插入、遍历操作
- C++_函数模板基础知识
- js基础知识——字符转换
- [C++]基础知识---函数
- C++ 基础知识七
- c++面对对象基础知识
- Python基础知识之字符编码和转码
- c++基础知识
- 【Java基础知识】IO类--字符流读写数据以及复制文件的几种方式
- c++基础知识
- [读书笔记]C++基础知识温习:智能指针