版权声明:本文为博主原创文章,未经博主允许不得转载。有事联系:[email protected] https://blog.csdn.net/qq_17550379/article/details/85539683
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true
;否则返回 false
。
示例 1:
输入:[1,1,1,1,1,null,1]
输出:true
示例 2:
输入:[2,2,2,5,2]
输出:false
提示:
- 给定树的节点数范围是
[1, 100]
。 - 每个节点的值都是整数,范围为
[0, 99]
。
解题思路
这个问题非常简单,首先想到的解法就是遍历二分搜索树的结果,将结果存放到list
中,然后遍历list
查看是够有重复元素即可。
Leetcode 144:二叉树的前序遍历(最优雅的解法!!!)
Leetcode 94:二叉树的中序遍历(最优雅的解法!!!)
Leetcode 145:二叉树的后序遍历(最详细的解法!!!)
class Solution:
def isUnivalTree(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if not root:
return True
tree = list()
self.inOrder(root, tree)
pre = root.val
for i in tree:
if i != None and i != pre:
return False
return True
def inOrder(self, root, tree):
if root:
self.inOrder(root.left, tree)
tree.append(root.val)
self.inOrder(root.right, tree)
更简洁的写法。
扫描二维码关注公众号,回复:
4738299 查看本文章
class Solution:
def isUnivalTree(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if not root:
return True
if (root.left and root.val != root.left.val) or (root.right and root.val != root.right.val):
return False
return self.isUnivalTree(root.left) and self.isUnivalTree(root.right)
最简洁的写法。
class Solution:
def isUnivalTree(self, root, val=-1):
"""
:type root: TreeNode
:rtype: bool
"""
return root == None or ((val == -1 or root.val == val) and \
self.isUnivalTree(root.left, root.val) and self.isUnivalTree(root.right, root.val))
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!