我正在研究一种递归方法...

public BinaryTree<T> TreeMirror ( BinaryTree<T> tree ) {
   BinaryTree mirror = new BinaryTree();
   mirror = clone(tree);
   ...
   TreeMirror(...)
   ...
}


我不希望该方法在每个递归步骤中都使mirror引用不同的BinaryTree对象,也不希望在第一次迭代后重复mirror = clone(tree)语句。我想知道是否有可能进行if语句检查,以查看mirror的实例是否已经初始化-在这种情况下,将跳过mirror = new BinaryTree()mirror = clone(tree)语句。

我认为如果不将mirror作为参数传递给方法或在类定义中定义它,这是不可能的...但是我想确保。

任何建议深表感谢。

- - - - -编辑 - - - - - -
我不允许更改方法签名,因此无法在实现中传递对象。我可以创建一个镜像树,但是只能将原始树修改为镜像,这是我想避免的事情。我试图创建一个新的BinaryTree对象,该对象是传入的原始树的镜像,但实际上无法弄清楚如何递归执行该操作。

最佳答案

很少看到这样的公共递归函数。更好的解决方案可能是让公共方法创建对象,然后调用一个私有函数,该私有函数递归地进行必要的更改。

通常很难使递归函数签名与您想要显示给客户的匹配。

10-05 22:37