对于以下此类题目可以转化为已知入栈序列求出栈序列可能性。
为什么可以这样转换,为什么说先序序列是入栈过程,中序序列是出栈过程?这个问题根据先序和中序序列的非递归算法代码很容易看出来。
观察先中序遍历非递归代码可以看出,除访问结点这行代码外其余代码相同,即出入栈的过程完全相同。唯一不同的是:
先序遍历每次进栈前,将进栈的元素输出在先序序列
而中序遍历是在出栈时,将出栈元素输出在序列中
因此,对于这相同的进出栈的过程,先序序列是入栈过程,中序序列是出栈过程
对于以下此类题目可以转化为已知入栈序列求出栈序列可能性。
为什么可以这样转换,为什么说先序序列是入栈过程,中序序列是出栈过程?这个问题根据先序和中序序列的非递归算法代码很容易看出来。
观察先中序遍历非递归代码可以看出,除访问结点这行代码外其余代码相同,即出入栈的过程完全相同。唯一不同的是:
先序遍历每次进栈前,将进栈的元素输出在先序序列
而中序遍历是在出栈时,将出栈元素输出在序列中
因此,对于这相同的进出栈的过程,先序序列是入栈过程,中序序列是出栈过程