Joh*_*rts 4 algorithm binary-tree breadth-first-search
我的意思是在特定级别,而不是达到特定级别.有人可以检查一下我修改过的BFS算法吗?(大部分来自维基百科)
Queue levelorder(root, levelRequested){
int currentLevel = 0;
q = empty queue
q.enqueue(root)
while not q.empty do{
if(currentLevel==levelRequested)
return q;
node := q.dequeue()
visit(node)
if(node.left!=null || node.right!=null){
currentLevel++;
if node.left ? null
q.enqueue(node.left)
if node.right ? null
q.enqueue(node.right)
}
}
}
Run Code Online (Sandbox Code Playgroud)
Asi*_*ake 22
我认为递归解决方案会更加简洁:
/*
* node - node being visited
* clevel - current level
* rlevel - requested level
* result - result queue
*/
drill (node, clevel, rlevel, result) {
if (clevel == rlevel) {
result.enqueue (node);
else {
if (node.left != null)
drill (node.left, clevel + 1, rlevel, result);
if (node.right != null)
drill (node.right, clevel + 1, rlevel, result);
}
}
Run Code Online (Sandbox Code Playgroud)
初始调用看起来像: drill (root, 0, n, rqueue);