二叉树的层序遍历
运用队列来存取元素
先建立结点的类型
public class BinNode
{
int val;
BinNode left;
BinNode right;
public BinNode(int val)
{
this.val = val;
}
}
然后开始正式的算法部分
public static void PrintPerLayer(BinNode root)
{
BinNode[] queue = new BinNode[20];
//建立两个引用,从而指向队列的头元素和末元素
int front;
int rear;
if(root == null)
{
return;
}
front = -1;
rear = 0;
queue[rear] = root;
while(front != rear)
{
front ++;
System.out.printf(queue[front].val + " "); //打印输出
if(queue[front].left != null)
{
rear ++;
queue[rear] = queue[front].left;
}
if(queue[front].right != null)
{
rear ++;
queue[rear] = queue[front].right;
}
}
}
主函数
public static void main(String[] args)
{
BinNode root = new BinNode(1);
root.left = new BinNode(2);
root.right = new BinNode(3);
root.left.left = new BinNode(4);
root.left.right = new BinNode(5);
root.right.left = new BinNode(6);
root.right.right = new BinNode(7);
root.left.left.left = new BinNode(8);
root.left.right.right = new BinNode(9);
PrintPerLayer(root);
}
输出结果为:1 2 3 4 5 6 7 8 9