zoukankan      html  css  js  c++  java
  • 637二叉树的层平均值

    class TreeNode:
    def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None
    # 这道题还是很容易的,还是用深搜的办法,遍历每一层,定义两个列表,
    # 一个用来计算每一层的和,另一个用来记每一层的个数。
    from typing import List
    class Solution:
    def averageOfLevels(self, root: TreeNode) -> List[float]:
    # 定义两个列表
    self.rep = []
    self.count = []
    self.dfs(root,0)
    # 求出每一层的平均值。
    for i in range(len(self.rep)):
    self.rep[i] = self.rep[i] / self.count[i]
    return self.rep
    # 定义递归函数
    def dfs(self,root,depth):
    # 如果节点为空,直接返回。
    if not root:
    return
    # 这里判断的是函数是否是第一次走到这一层,
    if len(self.rep) <= depth:
    # 第一次的话需要先进行在列表中添加一个数据
    self.rep.append(root.val)
    self.count.append(1)
    else:
    # 不是第一次进入这一层的话,就在原有的基础上边加上对应的数。
    self.rep[depth] += root.val
    self.count[depth] += 1
    self.dfs(root.left,depth + 1)
    self.dfs(root.right,depth + 1)

  • 相关阅读:
    编译环境
    好看的函数图
    R语言学习
    python画图
    C++技巧
    DLL
    进程共享数据
    八数码问题
    document.getElementsByTagName()返回的是数组document.getElementsById()是dom内容
    使用Math.max,Math.min获取数组中的最值
  • 原文地址:https://www.cnblogs.com/cong12586/p/13681119.html
Copyright © 2011-2022 走看看