节点类,包括名称与子节点。
class TestNode {
String name = null;
List<TestNode> children = new ArrayList<TestNode>();
//setter、getter
}
遍历函数:
public void levelOrder(TestNode root) {
Queue<TestNode> nodes = new LinkedList<TestNode>();
TestNode currNode = null;
List<TestNode> children = null;
assert(root != null);
nodes.add(root);
while (!nodes.isEmpty()) {
currNode = nodes.poll();//出队列
System.out.print(currNode.getName());
children = currNode.getChildren();
//子节点入队列
if (children != null && !children.isEmpty()) {
for (int i = 0; i < children.size(); i++) {
nodes.add(children.get(i));
}
}
}
}
class TestNode {
String name = null;
List<TestNode> children = new ArrayList<TestNode>();
//setter、getter
}
遍历函数:
public void levelOrder(TestNode root) {
Queue<TestNode> nodes = new LinkedList<TestNode>();
TestNode currNode = null;
List<TestNode> children = null;
assert(root != null);
nodes.add(root);
while (!nodes.isEmpty()) {
currNode = nodes.poll();//出队列
System.out.print(currNode.getName());
children = currNode.getChildren();
//子节点入队列
if (children != null && !children.isEmpty()) {
for (int i = 0; i < children.size(); i++) {
nodes.add(children.get(i));
}
}
}
}