如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
bool isUnivalTree(TreeNode* root)//递归写法
{
if (root == NULL)
return 1;
else
{
if (!root->left && !root->right)
return 1;
else if (root->left && !root->right)
return root->val == root->left->val&&isUnivalTree(root->left);
else if (root->right && !root->left)
return root->val == root->right->val&&isUnivalTree(root->right);
else
return root->val == root->left->val&&root->val == root->right->val&&isUnivalTree(root->left) && isUnivalTree(root->right);
}
}
非递归
bool isUnivalTree1(TreeNode* root)
{
if (root == nullptr)
return 1;
else
{
bool res = 1;
int num = root->val;
stack<TreeNode *>temp;
TreeNode *p = root;
while (p || !temp.empty())
{
while (p)
{
temp.push(p);
if (p->val != num)
return 0;
p = p->left;
}
if (!temp.empty())
{
p = temp.top();
temp.pop();
p = p->right;
}
}
return 1;
}
}