Leetcode.965 单值二叉树
题目链接
Leetcode.965 单值二叉树 Rating : 1178
题目描述
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true
;否则返回 false
。
示例 1:
输入:[1,1,1,1,1,null,1]
输出:true
示例 2:
输入:[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)