http://meixx.go1.icpcn.com/mycode/xxtree/XXTree.js//按照tf函数的遍历条件,遍历以node为根的树结构,对所有满足条件函数cf的节点,进行af操作
XXTree.prototype.traverseTree = function(node,tf,cf,af){
var nodeStack = [];
var rootNode = node;
var idx = 0;
for(;;){
if(node){
if(tf(node)){
if(cf(node)) af(node);
nodeStack.push({index:idx,nodeRef:node});
idx = 0;
node = node.childNodes[idx];
}else{
if(cf(node)) af(node);
if(node == rootNode) break;
node = node.pNode.childNodes[++idx];
}
}else{
node = nodeStack.pop();
if(nodeStack.length == 0) break;
idx = node.index + 1;
node = node.nodeRef.pNode.childNodes[idx];
}
}
}
XXTree.prototype.traverseTree = function(node,tf,cf,af){
var nodeStack = [];
var rootNode = node;
var idx = 0;
for(;;){
if(node){
if(tf(node)){
if(cf(node)) af(node);
nodeStack.push({index:idx,nodeRef:node});
idx = 0;
node = node.childNodes[idx];
}else{
if(cf(node)) af(node);
if(node == rootNode) break;
node = node.pNode.childNodes[++idx];
}
}else{
node = nodeStack.pop();
if(nodeStack.length == 0) break;
idx = node.index + 1;
node = node.nodeRef.pNode.childNodes[idx];
}
}
}
终于写完自己的了,还是学艺不精,多谢指教!