// 二分搜索树的层序遍历
public void levelOrder() {
// 我们使用LinkedList来作为我们的队列
LinkedList<Node> q = new LinkedList<>();
q.add(root);
while (!q.isEmpty()) {
Node node = q.remove();
System.out.print(node.key);
if (node.left != null) {
q.add(node.left);
}
if (node.right != null) {
q.add(node.right);
}
}
}
方式二
public List<List<Key>> levelOrder(String st) {
List<List<Key>> res = new ArrayList<>();
itr(res, 0, root);
return res;
}
private void itr(List<List<Key>> res, int index, Node root) {
if (root == null) return;
if (index + 1 > res.size()) {
res.add(new ArrayList<>());
}
res.get(index).add(root.key);
itr(res, ++index, root.left);
itr(res, index, root.right);
}