private boolean isLeaf(TreeNode n, List<Integer> list) {
        if (n == null) return false;
        if (n.left == null && n.right == null) {
            list.add(n.val);
            return true;
        }
        if (isLeaf(n.left, list)) n.left = null;
        if (isLeaf(n.right, list)) n.right = null;
        return false;
    }