如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
示例:
输入:[1,1,1,1,1,null,1]
输出:true
思路
树为单值 =
- root 与左右结点构成的本树为单值
- + root 的左子树为单值
- + root 的右子树为单值
- root 与左右结点构成的本树为单值:
- root → 为空 ⇢ return true
- ↓
- 不为空
- root 与 左相等吗? → 不等 ⇢ return false
- ↓
- 等
- root 与 右 相等吗? → 不等 ⇢ return false
- ↓
- 等
- root 的左子树为单值 且 root 的右子树为单值吗?
- 递归……
bool isUnivalTree(struct TreeNode* root){
if(!root)
return true;
if(root->left && root->val!=root->left->val)
return false;
if(root->right && root->val!=root->right->val)
return false;
return isUnivalTree(root->left)&&isUnivalTree(root->right);
}