1.题目描述
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
示例一:
示例二:
2.原题链接
3.思路分析
此题采用分治思路 ,转换为子问题会更加简单
如果是空树,可以理解为所有的值都相等,符合题目要求的单值二叉树
如果不是空树 ,根节点的值和左右孩子的值相比较 , 但是左右孩子可能有一个孩子为空
如果左孩子不为空,且左孩子的值与根节点值相等则继续
如果右孩子不为空,且右孩子的值与根节点值相等则继续
往下递归调用
4.代码实现
bool isUnivalTree(struct TreeNode* root)
{
//空树也是单值二叉树
if(root==NULL)
return true ;
//左孩子不为空 左孩子的值必须和根节点的值相同 ,相等时不能直接拿到结果 ,所以判断条件 为!=
if( root->left && root->left->val !=root->val )
return false ;
//右孩子不为空 右孩子的值必须和根节点的值相同,相等时不能直接拿到结果 ,所以判断条件 为!=
if( root->right && root->right->val !=root->val )
return false ;
//分治
return isUnivalTree(root->left) && isUnivalTree(root->right);
}
如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!!