Java数据结构后序非递归

不懂什么意思.有那种容易理解的图或者动图吗。头秃了请各位帮忙

应该是指数据结构的后序遍历的非递归实现吧,以二叉树为例:

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> list= new ArrayList<>();
        if(root==null){
            return list;
        }
        Stack<TreeNode> stack = new Stack<>();
        TreeNode cur = root;
        TreeNode prev=null;
        while(!stack.empty()||cur!=null){
            while(cur!=null){
                stack.push(cur);
                cur=cur.left;
            }
            TreeNode top=stack.peek();
            if(top.right==null||top.right==prev){
                stack.pop(); 
                prev=top;
                list.add(top.val);
            }else{
                cur=top.right;
            }
        }
        return list;
    }
}

思路:
在用非递归的方式实现后序遍历时,方法就是凑出来的,和中序遍历一样,就是想一想以怎样的入栈出栈的方式才能模拟出来中序遍历。
与中序遍历不一样的时,在后序遍历中,根是最后打印,在遍历完根的右树时,就要回到根,但是回到根时,如果不做判断标志,就会又回到右树,形成死循环。所以在这里使用 prev 标志,判断是否遍历了根的右树。