二叉树每个节点都具有相同的值,我们就可以比较每个树的根节点与左右两个孩子节点的值是否相同,如果不同返回false,否则,返回true。
如果是叶子节点,不存在还孩子节点,则这个叶子节点为根的树是单值二叉树。
如果二叉树从根节点开始递归到叶节点,递归判断根节点与左右孩子节点是否相同。
bool isUnivalTree(struct TreeNode* root) {
if(root==NULL)
{
return true;
}
if(root->left !=NULL && root->left->val != root->val)
{
return false;
}
if(root->right !=NULL && root->right->val != root->val)
{
return false;
}
return isUnivalTree(root->right) && isUnivalTree(root->left);
}