所以我正在实现我自己的二叉搜索树,并注意到一个丑陋的 if 语句经常以我的方式出现(这可能不是最好的方式,但这不是我们正在讨论的),基于是否节点的孩子是左孩子或右孩子,例如:
if (leftChild)
parent.setLeft(child.getRight());
else
parent.setRight(child.getRight());
然后我想到了这个:
parent.setChild(childIndex, child.getRight());
其中 childIndex 是一个早先确定的字节,其中 leftChild 将被确定。
正如您所看到的那样更简洁,但是要以这种方式使用它,我要么必须在 setChild 方法中使用 if 语句,要么将子项表示为长度为 2 的数组。如果我们在这里假装这个 BST 需要最大化性能/空间效率,将子节点引用的存储切换为 2 元素数组,而不是一对变量(甚至只是将 if 语句隐藏在 setChild 方法中)会是一种什么样的权衡。
我知道在现实世界中这可能并不重要,但我仍然对哪种方法是最好的方法感兴趣。