プログラミングトレーニング(06/14/2021)

プログラミングトレーニング(06/14/2021)

競技プログラミングの練習メモです。

[LeetCode][Medium] 250. Count Univalue Subtrees


https://leetcode.com/problems/count-univalue-subtrees/

簡単そうに見えて、PASSさせるまでには少し引っかかった。。

class Solution:
    def countUnivalSubtrees(self, root: TreeNode) -> int:
        self.count = 0
        if root is not None:
            self.dfs_helper(root)
        return self.count
    
    def dfs_helper(self, node: TreeNode) -> bool:
        if not node.left and not node.right:
            self.count += 1
            return True
        
        is_univalue = True
        if node.left:
            is_univalue = self.dfs_helper(node.left) and node.val == node.left.val
        if node.right:
            is_univalue = self.dfs_helper(node.right) and is_univalue and node.val == node.right.val
        
        self.count += is_univalue
        return is_univalue


See also