965. Univalued Binary Tree*

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);
    }
};
发布了327 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Eric_1993/article/details/104468378