【Day23-慢就是快】代码随想录-二叉树-迭代遍历

用迭代法实现二叉树的前后中序遍历。

递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中,然后递归返回的时候,从栈顶弹出上一次递归的各项参数,所以这就是递归为什么可以返回上一层位置的原因。

此时大家应该知道我们用栈也可以是实现二叉树的前后中序遍历了。

1. 前序遍历(迭代法)

中左右,先处理中间节点,先将根节点放入栈中,然后将右孩子入栈,再加入左孩子。

【Day23-慢就是快】代码随想录-二叉树-迭代遍历_第1张图片2. 中序遍历

【Day23-慢就是快】代码随想录-二叉树-迭代遍历_第2张图片3. 后序遍历

再来看后序遍历,先序遍历是中左右,后续遍历是左右中,那么我们只需要调整一下先序遍历的代码顺序,就变成中右左的遍历顺序,然后在反转result数组,输出的结果顺序就是左右中了,如下图:

【Day23-慢就是快】代码随想录-二叉树-迭代遍历_第3张图片

【Day23-慢就是快】代码随想录-二叉树-迭代遍历_第4张图片

你可能感兴趣的:(代码随想录,c++,数据结构)