> 文章列表 > Leetcode.965 单值二叉树

Leetcode.965 单值二叉树

Leetcode.965 单值二叉树

题目链接

Leetcode.965 单值二叉树 Rating : 1178

题目描述

如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。

只有给定的树是单值二叉树时,才返回 true;否则返回 false

示例 1:

Leetcode.965 单值二叉树

输入:[1,1,1,1,1,null,1]
输出:true

示例 2:

Leetcode.965 单值二叉树

输入:[2,2,2,5,2]
输出:false

提示:

  • 给定树的节点数范围是 [1,100][1, 100][1,100]
  • 每个节点的值都是整数,范围为 [0,99][0, 99][0,99]

解法:递归

  • 如果 root.left≠nullptrroot.left \\neq nullptrroot.left=nullptr,就判断 root.val==root.left.valroot.val = = root.left.valroot.val==root.left.val,如果不相等就返回 false
  • 如果 root.right≠nullptrroot.right\\neq nullptrroot.right=nullptr,就判断 root.val==root.right.valroot.val = = root.right.valroot.val==root.right.val,如果不相等就返回 false

时间复杂度: O(n)O(n)O(n)

C++代码:

class Solution {
public:bool isUnivalTree(TreeNode* root) {if(root == nullptr) return true;if(root->left != nullptr && root->val != root->left->val) return false;if(root->right != nullptr && root->val != root->right->val) return false;return isUnivalTree(root->left) && isUnivalTree(root->right);}
};

Python代码:

class Solution:def isUnivalTree(self, root: Optional[TreeNode]) -> bool:if root == None:return Trueif root.left != None and root.left.val != root.val:return Falseif root.right != None and root.right.val != root.val:return Falsereturn self.isUnivalTree(root.left) and self.isUnivalTree(root.right)