我正在研究一种递归方法...
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
对象,该对象是传入的原始树的镜像,但实际上无法弄清楚如何递归执行该操作。 最佳答案
很少看到这样的公共递归函数。更好的解决方案可能是让公共方法创建对象,然后调用一个私有函数,该私有函数递归地进行必要的更改。
通常很难使递归函数签名与您想要显示给客户的匹配。