[LeetCode]965.单值二叉树
/*965. 单值二叉树
已解答
简单
相关标签
相关企业
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
示例 1:
输入:[1,1,1,1,1,null,1]
输出:true
示例 2:
输入:[2,2,2,5,2]
输出:false
提示:
给定树的节点数范围是 [1, 100]。
每个节点的值都是整数,范围为 [0, 99] 。
/
/*
Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
*/
class Solution {
//本问题可采用深度优先搜索,判断当前节点与每一个子节点的关系是否满足要求,以左子节点为例,如果其不为空且其值与母节点值相等,则继续向下搜索该左子节点。此处要保证递归搜索时该搜索结果能够返回。如果值不相等则直接返回false.右子节点同理。
bool equal(TreeNode* root){
if(root->left!=nullptr){
if(root->val!=root->left->val)
return false;
else
if(!equal(root->left))//关键点,只有在左子节点返回值为空时使得当前节点返回false,不为空时不返回值。
return false;
}
if(root->right!=nullptr){//关键点,对右子节点同理操作,避免遗漏。
if(root->val!=root->right->val)
return false;
else
if(!equal(root->right))
return false;
}
return true;//关键点,只有在左方的子节点以及右方的所有节点都检索后,无不同时返回true
}
public:
bool isUnivalTree(TreeNode* root) {
bool univalflag=equal(root);
return univalflag;
}
};
posted on 2024-07-13 11:12 Mo_Jianjun 阅读(4) 评论(0) 编辑 收藏 举报