层序遍历二叉树需要用到队列的先进先出的特性,这里的二叉树采用二叉链接表示法,队列是采用顺序存储结构的循环队列,按照前序遍历建立二叉树,利用队列层序遍历二叉树的主要过程如下:
- 将二叉树的根结点的指针入队列
- 若队列非空,将队列中的队头元素出队列,然后将该队头元素的左孩子指针(若存在)入队列,接着将队头元素的右孩子指针(若存在)入队列
- 重复过程2,直到队列中没有元素为止
层序遍历二叉树需要用到队列的先进先出的特性,这里的二叉树采用二叉链接表示法,队列是采用顺序存储结构的循环队列,按照前序遍历建立二叉树,利用队列层序遍历二叉树的主要过程如下:
There is a program to compute word length of a machine as below.
There is a program to convert a string of hexadecimal digits into its equivalent integer value as below.
There is a program to copy input to output as blow.
There is a program to print Fahrenheit-Celsius table as below.
This program is presented as below.
在光标所在行查找字符在普通模式下用 f{char}
命令,光标会移动到该字符所在的位置,向下重复查找在普通模式下用 ;
,向上回退查找用 ,
在光标所在行查找与替换在普通模式下用 :s/target/replacement
,其中 target
和 replacement
分别用被替换的字符或字符串和替换的字符或字符串代替,重复在普通模式下用 &
命令,回退在普通模式下用 u
手动控制每一次替换在普通模式下用 :%s/target/replacement/gc
,这样的话 Vim 会在每一次出现替换的地方询问是否替换,有以下几种选项:
重复上次的操作在普通模式下用 .
命令
取消上次的操作在普通模式下用 u
命令
整行删除在普通模式下用 dd
命令,此命令在删除行后 不进入插入模式
整行删除在普通模式下用 S
命令,此命令在删除行后 进入插入模式
在我的博文关于递归的一些简单想法,我用自己的理解谈了一些关于递归的看法,下面用 《数据结构与算法分析——C语言描述》 一书中第 9 页的四条基本原则将我的思想加以规范化,并在后续的不断加强学习中不断完善本文的内容。
在编写递归程序的时候,要牢记递归的四条基本原则:
对于 《数据结构与算法分析——C语言描述》 一书第 20 页所描述的算法 3,相信会有很多人表示不怎么理解,下面我由具体问题的求解过程出发,谈谈我自己的理解:
首先,什么是分治法呢?所谓 分治法,就是 将一个问题的求解过程分解为两个大小相等的子问题进行求解,如果分解后的子问题本身也可以分解的话,则将这个分解的过程进行下去,直至最后得到的子问题不能再分解为止,最后将子问题的解逐步合并并可能做一些少量的附加工作,得到最后整个问题的解。在求解原来整个问题的算法思想,与求解每一个子问题的算法思想完全相同,则可以用到递归来解决这个问题,在我的博文 关于递归的一些简单想法 中,曾指出,当我们要解决的问题有着 反复执行的基本操作 的时候,可以考虑使用递归,在这里,原来的整个的问题与每一个分解后子问题都有着反复执行的算法思想,这就是一个基本操作,所以可以用递归实现,关于递归,在我的博文 由递归思想处理问题的基本原则中,给出了有关递归思想的部分描述。