前序遍历(DLR)
前序遍历也叫做先根遍历、先序遍历,可记做根左右。
前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。
/二叉树游标前序遍历类public class MyBiTreePreIterator extends MyBiTreeIterator{
Stack<MyBiTreeNode> stack = new Stack<MyBiTreeNode>();
MyBiTreePreIterator()
{
}
MyBiTreePreIterator(MyBiTreeNode root)
{
super(root);
}
@Override
public void next() {
// TODO Auto-generated method stub
if(this.isComplete)
{
System.out.println("已经遍历到二叉树结尾!");
return ;
}
if(this.curr.getRightChild()!=null)
{
stack.push(this.curr.getRightChild());
}
if(this.curr.getLeftChild()!=null)
{
stack.push(this.curr.getLeftChild());
}
if(!stack.empty())
{
this.curr = stack.pop();
}
else
{
this.isComplete = true;
}
}
@Override
public void reset() {
// TODO Auto-generated method stub
if(this.root==null)
{
this.isComplete = true;
}
else
{
this.isComplete = false;
}
if(this.root==null)
{
return ;
}
this.curr = this.root;
}
}