我这里有这个简单的方法:
private Node addItem(Node current, Node target) {
if (current.data.getId() < target.data.getId()) {
if (current.larger == null) {
current.larger = target;
Log.i("BinaryTree", "Added item: " + target.data.getId());
return target;
}
return addItem(current.larger, target);
} else {
if (current.smaller == null) {
current.smaller = target;
Log.i("BinaryTree", "Added item: " + target.data.getId());
return target;
}
return addItem(current.smaller, target);
}
}
Run Code Online (Sandbox Code Playgroud)
当我调试它时,代码到达'return target;'行,然后跳过它并转到最后一个return语句 - 'return addItem(current.smaller,target);'!我一生中从未见过像这样的WTF吗?!?!