Leetcode 965:單值二叉樹(最詳細的解法!!!)
阿新 • • 發佈:2019-01-01
如果二叉樹每個節點都具有相同的值,那麼該二叉樹就是單值二叉樹。
只有給定的樹是單值二叉樹時,才返回 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)
更簡潔的寫法。
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
如有問題,希望大家指出!!!