1、广度优先搜索算法的遍历次序:
层次二叉树的遍历就是广度优先算法(BFS):
/**
* 参数:r是根节点
* **/
public static void LevelOrder(BinTreeNode r) throws Exception {
Queue<BinTreeNode> q = new LinkedList<BinTreeNode>();
if (r == null)
return;
BinTreeNode current;
q.add(r);
while (!q.isEmpty()) {
current = (BinTreeNode) q.remove();
System.out.println(current.getData());
if (current.getlChild() != null)
q.add(current.getlChild());
if (current.getrChild() != null)
q.add(current.getrChild());
}
}
2、深度优先搜索算法的遍历次序(下面的字母为二叉树):
A
B C
D E F G
A是第一个访问的,然后顺序是B和D、然后是E。然后再是C、F、G。
前序遍历二叉树就是深度优先搜索算法(DFS):
/**
* 参数r是根节点
* **/
public static void preOrderNonRecu(BinTreeNode r) throws Exception {
Stack<BinTreeNode> s = new Stack<BinTreeNode>();
if (r == null) {
return;
}
BinTreeNode current;
s.push(r);
while (!s.isEmpty()) {
current = s.pop();
System.out.println(current.getData());
if (current.getrChild() != null)
s.push(current.getrChild());
if (current.getlChild() != null)
s.push(current.getlChild());
}
}