中序遍历及其算法-基于栈的遍历
1.中序遍历算法原理讲解
二叉树中序遍历示意图
若树为空,则空操作返回。否则,从根节点开始(注意并不是先访问根节点),中序遍历根节点的左子树,然后是(访问根节点,最后中序遍历根节点的右子树。(M)型,(左中)
算法思路
从根节点开始,每次迭代弹出当前栈顶元素,并将其孩子节点压入栈中,先压右节点再压左节点。
在这个算法中,输出到最终结果的顺序按照 Top->Bottom 和 Left->Right,符合前序遍历的顺序。
2.基于栈的算法实现
定义树的结构体
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;