树的一种非递归遍历

这种遍历 好像是有个名字的,忘了! 做html编辑器的时候,想到了这样一种算法

算法比较简单,没有采用递归,javascript实现如下,可以轻易转为其他语言

 

var queue= new Array();
var started = false;
var scanned = false;
var temp = root;
while (temp) {
	if(!scanned&&temp.firstChild){
		temp = temp.firstChild;
		continue;
	}
	queue.push(temp);
	if(temp.nextSibling){
		temp = temp.nextSibling;
		scanned = false;
		continue;
	}
	scanned = true;
	temp = temp.parentNode;
}
return queue;
 

 

你可能感兴趣的:(遍历,树,深度优先)