各位大佬,最近在复习二叉树,但是写到中序遍历的时候为什么这里无法实现非递归
二叉树中序遍历?
求解答。
谢谢
//非递归实现中序遍历
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);
}
}
}