用非递归实现二叉树的遍历问题(java描述)

各位大佬,最近在复习二叉树,但是写到中序遍历的时候为什么这里无法实现非递归
二叉树中序遍历?
求解答。
谢谢

//非递归实现中序遍历
    public static void inOrderNoRecur(BinTreeNode root){

        LinStack lins=new LinStack();
        if (root==null) return;
        BinTreeNode curr=root;
        lins.push(curr);                            //直接将根部元素压入栈底

        while(lins.notEmpty()){                     //判断栈是否为空
            //这里面是while循环,而不是if是因为需要将所有的左子树的结点都遍历完,再遍历右子树
            while (curr.getLeftChild()!=null) { 
                lins.push(curr.getLeftChild());
                curr=curr.getLeftChild();
            }
            curr=(BinTreeNode) lins.pop();
            System.out.print(" "+curr.getData());

            if (curr.getRightChild()!=null) {
            curr=curr.getRightChild();
            lins.push(curr);
            }
        }
    }

1个回答

递归遍历二叉树,不适合用于这种方式呀;递归,是按层次遍历,从“根”节点一直往叶子节点遍历

weixin_37690143
每周一小记 谢谢你的回答,我尝试一下用非递归的方法遍历,不知道这边错在哪儿?
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问