非递归遍历
    一、非递归遍历
    概念:
    非递归遍历是指使用循环而不使用递归来遍历树结构的算法。
    实现的方法:
    1. 利用栈
    在非递归的二叉树遍历中,需要利用栈来记录父节点和当前节点之间的关系,我们可以先序遍历整棵树的具体步骤:
    (1)把根节点入栈;
    (2)从栈中取出一个节点作为当前节点,并访问它;
    (3)如果当前节点有右子节点,把它入栈;
    (4)如果当前节点有左子节点,把它入栈;
    (5)反复以上步骤,直到栈为空,完成树的遍历。
    2. 不使用栈
    在不使用栈的情况下,我们可以使用一个全局变量存储当前节点,然后以后序遍历的方式实现:
    (1)循环,若当前节点不为空,就把它的左子节点赋给当前节点;
二叉树中序遍历非递归算法
    (2)如果当前节点没有左子节点,就访问它;
    (3)如果节点有右子节点,就将其赋给当前节点,然后重复(1)步;
    (4)当节点没有左、右子节点时,给另一个变量记住其父节点,如果这个变量不为空,就将当前节点置为这个变量,否则结束。
    应用场景:
    非递归的二叉树遍历算法非常实用,它可以用于查树中某个特定的节点,也可以用来构建树结构,甚至可以用来执行实际的操作,如求最小路径之和。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。