public static BinaryTreeNode<Integer> sinkZero(BinaryTreeNode<Integer> root) {
        if(root == null) {
            return root;
        }

        sinkZero(root.left);
        sinkZero(root.right);
        //check if root's data is zero
        if(root.data.compareTo(0) == 0){
            // if either of the child is nonzero  .. run a custom preorder traversal on this root
            if((root.left != null && root.left.data.compareTo(0) != 0) || (root.right != null && root.right.data.compareTo(0) != 0)) {
               customPreOrder(root);
            }
        }

        return root;
    }