965. Univalued Binary Tree*
https://leetcode.com/problems/univalued-binary-tree/
题目描述
A binary tree is univalued if every node in the tree has the same value.
Return true
if and only if the given tree is univalued.
Example 1:
Input: [1,1,1,1,1,null,1]
Output: true
Example 2:
Input: [2,2,2,5,2]
Output: false
Note:
- The number of nodes in the given tree will be in the range
[1, 100]
. - Each node’s value will be an integer in the range
[0, 99]
.
C++ 实现 1
前序遍历, 访问所有节点的值, 并判断是否和根节点的值相等.
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
private:
bool preorder(TreeNode *root, int val) {
if (!root) return true;
if (root->val != val) return false;
auto a = preorder(root->left, val);
auto b = preorder(root->right, val);
return a && b;
}
public:
bool isUnivalTree(TreeNode* root) {
if (!root->left && !root->right) return true;
int val = root->val;
return preorder(root, val);
}
};