题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个二叉树,判断其中的节点的值是否相同

思路分享

  • 官方题解镇楼。

    https://leetcode.cn/problems/univalued-binary-tree/solutions/1512258/dan-zhi-er-cha-shu-by-leetcode-solution-15bn/

  • 灵神有一句话说得特别好,大致意思是不要在一开始就拘泥于细节,就比如在二叉树的相关题目,开始先考虑节点本身与左子树和右子树的关系就好。

  • 那本题来讲,本题要判断整个二叉树是否值都相等,那么如果一个二叉树满足这个条件,那么每个节点都与其左子树和右子树的值都相等,只要在这个基础上,处理好叶子节点和空即可。

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isUnivalTree(self, root: Optional[TreeNode]) -> bool:
if not root:
return True
if not root.left and not root.right:
return True
ans = True
if root.left:
ans = ans and root.val == root.left.val
if root.right:
ans = ans and root.val == root.right.val
return ans and self.isUnivalTree(root.left) and self.isUnivalTree(root.right)