用栈进行二叉树的后序遍历

原题:https://leetcode.com/problems/binary-tree-postorder-traversal/


本题要求对二叉树进行后序遍历。一般来说,如果是用直接输出的方式进行,则非常简便:先先后对左右两侧结点进行遍历,之后将当前元素输出,然后递归代回即可。但是本题目则要求将结果存至向量内输出。一开始我试图采用原本的方法,但是这样只能输出最左边的结点。代码如图:

用栈进行二叉树的后序遍历_第1张图片

之后上网查了一下后发现,这种情况应该要利用栈的后进先出原理进行存储,即:先按照从前到后的顺序,将元素存入栈中,到了最后再将其压栈至向量中。在实际编写时发现,由于我们在压栈时采用了从头结点开始向下压入的方式,故存放结点的向量与实际排列顺序相反。因此,需要使用第二个栈将其反向,代码如下:

用栈进行二叉树的后序遍历_第2张图片

你可能感兴趣的:(用栈进行二叉树的后序遍历)