F = function(node){
return typeof(node)!="object" ?
node
: transformable([F(node[0]),F(node[1])]) ?
F(transform(F(node[0]),F(node[1])))
: node;
};
此函数接收二叉树,例如[1,[[2,3],[4,5]]]
,并递归地应用一系列转换。有没有办法转换该功能,以便
[N,1,N,N,2,3,N,4,5]
; 答案 0 :(得分:1)
这取决于你的意思迭代。如果你的意思是用循环来解决它,那么你可能需要一个回溯堆栈,几乎可以反映你在当前的递归实现中调用堆栈,所以在实践中它仍然是递归,只有不同的堆栈。
如果不进行分支,则只能在没有堆栈的情况下进行纯迭代。即每尾只有一个递归调用。树有两个或更多,所以它们只能递归处理。