模拟树数据结构

Mocking a tree data structure

我正在编写一个程序,它采用给定的二叉树并尝试确定树是否平衡。

程序需要一个二叉树作为输入,例如:1,-1,-2,-3 将用 1 作为根节点和 subsequent.getLeft()(或 .getRight () 如果树的平衡方式不同!)命令将产生 -1、-2、-3。

如果需要重复调​​用不同的节点对象,我该如何实现这种行为?最好的做法是在最小起订量中实现这一点,还是只使用简单的实现会更好。

使用简单的实现。在这种情况下,我不建议您使用 fake。创建假的工作将花费更多,然后为您将测试的每个场景创建树。另一个危险是创建过度指定的测试,该测试将在任何更改时失败。

您的方法可能会实现如下:

    public static bool isBalanced(Node root){

        if(root==null){
            return true; 
        }
        else{
            int lHight = root.left.height();
            int rHight = root.right.height();
            if(Math.Abs(lHight - rHight) > 1)
            {
                return false;
            }

            return isBalance(root.left) && isBalance(root.right);

        }
    }

如您所见,有一个递归。通常很难用假货测试递归方法。在您的情况下,您可以在没有任何假的情况下测试方法行为,所以我认为这是正确的选择。

我建议您测试以下行为:

空树,根平衡,根不平衡(向左,向右),多层树:平衡,向右,向左

如果您将创建上述场景,您可能会涵盖所有情况,并且您的测试不会被过度指定...