leetcode_965 单值二叉树

62 阅读1分钟

要求

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

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

示例 1:

image.png

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

示例 2:

image.png

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

代码详解

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: TreeNode) -> bool:
        self.value = root.val
        self.result = True
        self.generate(root)
        return self.result

    def generate(self,root):
        if root.val != self.value:
            self.result = False
            return 
        
        if not root:
            return 

        if root.left:
            self.generate(root.left)
        
        if root.right:
            self.generate(root.right)

image.png

解题思路:其实就是一个遍历的过程,我们设置了原始的值和一个状态变量,我们在遍历的过程中,一只和我们的原始的值进行比较,一旦出现不同的值的时候,我们的最终状态变化成假的状态,遍历完成,输出状态我们就能知道这个树是不是单值二叉树了,时间复杂度:O(N) 空间复杂度:O(N)。