【python3】统计值等于子树平均值的节点数

  • Post author:
  • Post category:python


题目描述

给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。

注意:

n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。

root 的 子树 由 root 和它的所有后代组成。

Coding

# 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 averageOfSubtree(self, root: Optional[TreeNode]) -> int:
        cntNum=0
        def dfs(node:TreeNode):
            nonlocal cntNum
            if node==None: 
                return 0,0
            sum=node.val
            s,cnt=dfs(node.left)
            s2,cnt2=dfs(node.right)
            Num=cnt+cnt2+1
            sum+=s+s2
            if sum//Num == node.val:
                cntNum+=1
            return sum,Num
        dfs(root)
        return cntNum



版权声明:本文为qq_36822894原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。