这是我的代码应该做的:
问题要求我创建方法接受最小和最大整数作为参数,并从树中删除不在该范围内的任何元素,包括在内。
我最初写的代码是
public void trim (int min, int max) {
overallRoot = trim (overallRoot, min, max);
}
private IntTreeNode trim (IntTreeNode root, int min, int max) {
if (root != null) {
if(root.data < min && root.data > max) {
root = null;
}else {
root.left = trim(root.left, min, max);
root.right = trim (root.right, min, max);
}
}
return root;
}
我做了一些搜索,因为我的代码没有重建树,我找到了这段代码:
private IntTreeNode trim (IntTreeNode root, int min, int max) {
if (root == null) {
return root;
}
root.left = trim(root.left, min, max);
root.right = trim (root.right, min, max);
if(root.data < max && root.data> min) {
return root;
}else if (root.data < min) {
return root.right;
}else if (node.data > max) {
return root.left;
}
}
该代码无法编译,因为它缺少 return 语句,因此,当我将其更改为 else 时,它仅在某些情况下有效。我有点理解上面的代码,但写的不是很直观,但话又说回来......递归不是很直观。正如我的教授所说,“信仰的飞跃”。任何帮助将不胜感激:) 努力在我的决赛中表现出色