LeetCode637. 二叉树的层平均值(层序遍历)

1、题目描述

https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。

输入:
    3
   / \
  9  20
    /  \
   15   7
输出:[3, 14.5, 11]
解释:第 0 层的平均值是 3 ,  第1层是 14.5 , 第2层是 11 。
因此返回 [3, 14.5, 11] 。

2、代码详解

python3的 / 才是正常除,Python2的/是地板除

# Definition for a binary tree node.
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def averageOfLevels(self, root):
        """
        :type root: TreeNode
        :rtype: List[float]
        """
        queue = []  # 双端队列,存储TreeNode
        result = []  # 存储弹出的队头值
        if root == None:
            return []

        queue.append(root)
        while len(queue) > 0:
            level_size = len(queue)  # 每层
            current_level = []  # 当前层:一层存在一个list中

            for _ in range(level_size):  # 仅pop(0)出当前层的
                queueHead = queue.pop(0)  # 弹出队首的树节点(出队)
                current_level.append(queueHead.val)  # 存储被弹出树节点的值
                # 左右孩子节点入队
                if queueHead.left:
                    queue.append(queueHead.left)
                if queueHead.right:
                    queue.append(queueHead.right)

            result.append(sum(current_level)/level_size)  # 除法必须在Python3

        return result


pNode1 = TreeNode(3)
pNode2 = TreeNode(9)
pNode3 = TreeNode(20)
pNode6 = TreeNode(15)
pNode7 = TreeNode(17)

pNode1.left = pNode2
pNode1.right = pNode3
pNode3.left = pNode6
pNode3.right = pNode7

s = Solution()
print(s.averageOfLevels(pNode1))  # [3.0, 14.5, 16.0]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值