您的位置:首页 > 其它

二叉树的层次遍历

2016-09-23 17:37 267 查看
层次遍历:

a.访问根节点

b.从左到右访问第2层的所有节点

c.从左到右访问第3层的所有节点,。。。。



package pac1;

public class Demo22 {

/**
* @param args
* 层次遍历二叉树
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BNode a=new BNode(2, null, null);
BNode b=new BNode(4, null, null);
BNode c=new BNode(8, null, null);
BNode d=new BNode(1, null, a);
BNode e=new BNode(5, b, null);
BNode f=new BNode(7, null, c);
BNode g=new BNode(3, d, e);
BNode h=new BNode(9, f, null);
BNode i=new BNode(6, g, h);
levelOrder(i);
}

public static void levelOrder(BNode root){
int maxSize=10;
BNode p;
BNode [] qu=new BNode[maxSize]; //定义循环队列
int front=0,rear=0;
rear++;
qu[rear]=root;
while(front!=rear){ //队列不空
front=(front+1)%maxSize;
p=qu[front]; //队头出队
System.out.print(p.getData()+" ");
if(p.getLeft()!=null){ //如果左孩子不为空,进队
rear=(rear+1)%maxSize;
qu[rear]=p.getLeft();
}
if(p.getRight()!=null){ //如果右孩子不为空,进队
rear=(rear+1)%maxSize;
qu[rear]=p.getRight();
}
}

}

}
6 3 9 1 5 7 2 4 8 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: