文章目录
- 1. 题目
- 2. 解题
- 2.1 递归
- 2.2 循环
1. 题目
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
2. 解题
2.1 递归
class Solution {
public:bool isUnivalTree(TreeNode* root) {if(!root)return true;bool flag = true;int val = root->val;judge(root,flag,val);return flag;}void judge(TreeNode* root, bool &flag, int &val){if(!root || flag == false)return;if(root->val != val){flag = false;return;}judge(root->left,flag,val);judge(root->right,flag,val);}
};
2.2 循环
class Solution {
public:bool isUnivalTree(TreeNode* root) {if(!root)return true;int rootval = root->val;stack<TreeNode*> stk;TreeNode *cur;while(root || !stk.empty()){while(root){stk.push(root);root = root->left;}root = stk.top();if(root->val != rootval)return false;stk.pop();root = root->right;}return true;}
};