大黄奔跑 2017-03-17 05:15 采纳率: 0%
浏览 1094

用非递归实现二叉树的遍历问题(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条回答 默认 最新

  • 你我多虚伪 2017-03-17 06:07
    关注

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

    评论

报告相同问题?