题目(微软):
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出 8 6 10 5 7 9 11。
解题思路:
编程之美3-10...分层遍历二叉树
思想很简单...一个队列,先将根节点入队....然后开始循环
当一个节点出队之前,将它的左子节点、右子节点入队,然后出队输出该节点的信息...
直到队列中的长度为0。
public class Q16 {
public static void out(Node head)
{
ArrayList<Node> list = new ArrayList<Node>();
list.add(head);
while(list.size()>0)
{
Node node = list.get(0);
System.out.println(node.data);
if(node.leftChild !=null)
list.add(node.leftChild);
if(node.RightChild != null)
list.add(node.RightChild);
list.remove(0);
}
}
public static void main(String[] args) {
Node a = new Node(8);
Node b = new Node(6);
Node c = new Node(10);
Node d = new Node(5);
Node e = new Node(7);
Node f = new Node(9);
Node g = new Node(11);
a.leftChild = b;
a.RightChild = c;
b.leftChild = d;
b.RightChild = e;
c.leftChild = f;
c.RightChild = g;
out(a);
}
}