Java 二叉树remove返回值问题

 private boolean remove(TreeUnit unit,int delData) {
            //二叉树的右边进行删除
            TreeUnit rightUnit = unit.rightUnit;//当前等于data的节点
            if (unit.rightUnit != null) {
                if (rightUnit.data == delData) {
                    unit.rightUnit = rightUnit.leftUnit; //data的上节点指向data的下一个左节点(右边最小)

                    if (rightUnit.rightUnit != null) {//如果data节点有右节点的话,
                        TreeUnit unit1 = rightUnit.leftUnit;
                        unit1.rightUnit = rightUnit.rightUnit;//指向新的data节点
                    }
                    System.out.println("-" + rightUnit.data+"-");
                    System.out.println("-" + delData+"-");
                    return true;//这里有问题,删除最后一个结点的时候进行了操作,但是没有返回true
                }
            }

            //二叉树左边进行删除
            if (unit.leftUnit != null) {
                TreeUnit leftUnit = unit.leftUnit;  //当前等于data的节点
                if (unit.leftUnit.data == delData) {
                    unit.leftUnit = leftUnit.rightUnit;//data的上节点指向data的下一个右节点(左边最大)

                if (leftUnit.leftUnit != null) {//如果data节点有左节点的话,
                    TreeUnit unit1 = leftUnit.rightUnit;
                    unit1.leftUnit = leftUnit.leftUnit;//指向新的data节点
                }
                    return true;//这里有问题,删除最后一个结点的时候进行了操作,但是没有返回true
                }

            }

            if (delData > unit.data) {
                if (unit.rightUnit != null) {
                    remove(unit.rightUnit, delData);
                }
            } else if (delData < unit.data) {
                if (unit.leftUnit != null) {
                    remove(unit.leftUnit, delData);
                }
            }
            return false;
        }
        public boolean remove(int data){
            return remove(root, data);
        }
class Entrance {
    public static void main(String[] args) {
        MySubtree mySubtree = new MySubtree();
        TreeUnit treeUnit = new TreeUnit(5);
        mySubtree.root = treeUnit;
        mySubtree.insert(3);
        mySubtree.insert(9);
        mySubtree.insert(11);
        mySubtree.insert(2);
        mySubtree.insert(7);
        mySubtree.insert(4);

        System.out.println(mySubtree.remove(11));
        System.out.println(mySubtree.remove(2));
        System.out.println(mySubtree.remove(4));

        //       5
        //    3     9
        // 2   4   7    11

        mySubtree.midOrder();//中序遍历
        System.out.println();
        mySubtree.preOrder();//先序遍历
        System.out.println();
        mySubtree.postOrder();//后序遍历
    }
}

为啥运行结果是false啊,明明都执行到true前面了

img

删除最后一个节点时,会执行操作,但是没有返回true来表示删除成功。可以在删除最后一个节点时添加返回true语句来表示删除成功。

建议改成标志位,代替返回true/false