前序非递归实现,使用栈
28依次进去
//二分搜索树的非递归前序遍历
public void preOrderNR(){
Stack<Node> stack=new Stack<BST<E>.Node>();
stack.push(root);//把节点进栈
while(!stack.isEmpty()){//判断不是为空执行
Node cur=stack.pop();
System.out.println(cur.e);
if(cur.right !=null)
stack.push(cur.right);
if(cur.left !=null)
stack.push(cur.left);
}
}
层序遍历
一层一层的遍历
//二分搜索树的层序遍历
public void levelOrder(){
Queue<Node> queue=new LinkedList<BST<E>.Node>();
queue.add(root);
while(!queue.isEmpty()){
Node cur=queue.remove();
System.out.println(cur.e);
if(cur.left !=null)
queue.add(cur.left);
if(cur.right !=null)
queue.add(cur.right);
}
}