我正在尝试使 int 二叉搜索树的 add 方法更新每个节点的 balanceFactor。这个想法是它将作为 add() 的一部分递归更新。假设在调用 add 方法时,已经是树一部分的所有节点都正确设置了它们的 balanceFactor,这是否涵盖了它应该或缺少的所有情况,以及如何测试它?
到目前为止,这是我的代码:
public class IntBST implements Iterable<Integer> {
private static class Node {
Node left, right;
int value, balanceFactor;
public Node(int value) {
this.value = value;
}
}
Node root;
public void add(int value) {
if (root == null) {
root = new Node(value);
} else {
add(value, root);
}
}
/**
*
* @param val
* @param currentNode
*/
private void add(int value, Node currentNode) {
if (value < currentNode.value) {
currentNode.balanceFactor--;
if (currentNode.left == null) {
currentNode.left = new Node(value);
} else {
add(value, currentNode.left);
}
} else {
currentNode.balanceFactor++;
if (currentNode.right == null) {
currentNode.right = new Node(value);
} else {
add(value, currentNode.right);
}
}
}