如何在二叉搜索树的add方法中跟踪平衡因子?

问题描述 投票:0回答:0

我正在尝试使 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);
            }
        }
    }
java recursion binary-search-tree
© www.soinside.com 2019 - 2024. All rights reserved.