bool isUnivalTree(struct TreeNode *root)
{
    if (root == NULL)
        return 1;
    if (root->left)
    {
        if (root->left->val != root->val)
            return 0;
    }
    if (root->right)
    {
        if (root->right->val != root->val)
            return 0;
    }
    return isUnivalTree(root->left) && isUnivalTree(root->right);
}

965