首页 > 其他分享 >637. 二叉树的层平均值

637. 二叉树的层平均值

时间:2023-12-24 16:56:36浏览次数:46  
标签:一层 cur 637 队列 二叉树 append 平均值

目录

题目

  • 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。

题解:BFS

class Solution:
    def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
        q=[root]#用列表做队列
        res=[]#结果列表
        while q:
            size = len(q)
            m=0#每一层的平均值
            for _ in range (size):
                cur=q.pop(0)#弹出队列第一个原素
                m+=cur.val#先求每一层的和
                if cur.left:
                    q.append(cur.left)#如果有左孩子,加入队列
                if cur.right:
                    q.append(cur.right)#如果有右孩子,加入队列
            m=float(m/size)#用每一层的和除每一层的个数为每一层的平均数,转换为浮点型
            res.append(m)#把每一层的平均值加入到结果列表
        return res

标签:一层,cur,637,队列,二叉树,append,平均值
From: https://www.cnblogs.com/lushuang55/p/17924563.html

相关文章

  • 二叉树给出先序和中序遍历序列,求和树 要求输出中序遍历序列;
    1.就算不知道用vector的初始化,也可以手动赋值创建子数组。2.不断找到当前序列对应的根节点,计算他的子节点的总和,在这样递归处理过程中,注意要中序输出,所以对于是先遍历完左子树,然后输出答案,然后遍历右子树#include<bits/stdc++.h>usingnamespacestd;#definelllonglong//......
  • 二叉树已经知道先序中序推后序
    https://www.acwing.com/problem/content/3601/不断找新的先序的根节点,根据位置切割中序,根据中序左右子树大小反切割先序,找到左子树对应的先序中序,然后递归处理#include<stdio.h>#include<vector>#include<map>#include<algorithm>#include<algorithm>#include<iostream>......
  • C++U5-11-特殊二叉树
    学习目标 完全二叉树:二又树拥有的性质,在完全二叉树中都拥有 性质 练习1 练习2 练习3编程题:[完全二叉树的叶子结点]【算法分析】递归,前序遍历输出。【参考代码】#include<iostream>usingnamespacestd;constintSIZE=1010;structnode{......
  • 662. 二叉树最大宽度(中)
    目录题目题解:BFS正解:优化题目给你一棵二叉树的根节点root,返回树的最大宽度。树的最大宽度是所有层中最大的宽度。每一层的宽度被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。将这个二叉树视作与满二叉树结构相同,两端点间会出现一些延伸到这一层的null......
  • 543. 二叉树的直径
    给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。 示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或[5,2,1,......
  • 623. 在二叉树中增加一行(中)
    目录题目题解:BFS题目给定一个二叉树的根root和两个整数val和depth,在给定的深度depth处添加一个值为val的节点行。注意,根节点root位于深度1。加法规则如下:给定整数depth,对于深度为depth-1的每个非空树节点cur,创建两个值为val的树节点作为cur的左......
  • 二叉树的查找算法的实现与运用
    二叉树的查找算法的实现与运用这里我们需要运用到之前二叉树建立的知识点每一次调用Insert函数时,都会开辟一个BiNode类型的空间,同时递归调用。其次,我们在建立平衡二叉树时,当前节点的左结点小于该结点,当前节点的右结点大于该结点,所以,我们在递归之前添加了一个判断条件。最后,Inser......
  • 320二叉树的不同形态(已知层次遍历和中序遍历创建二叉树;输出叶子结点(从左到右);后序遍历)
    题目:二叉树的不同形态问题描述给定二叉树T(树深度H<=10,深度从1开始,结点个数N<1024,结点编号1~N)的层次遍历序列和中序遍历序列,输出T从左向右叶子结点以及二叉树先序和后序遍历序列。输入格式输入共三行:第一行是整数n,表示二叉树中的结点数目;第二行有n个整数,表示该二叉树的层次遍......
  • 319将满二叉树转化为求和树
    题目:将满二叉树转换为求和树问题描述给出满二叉树,编写算法将其转化为求和树求和树:二叉树的求和树,是一颗同样结构的二叉树,其树中的每个结点将包含原始树中的左子树和右子树的和。二叉树:10/    \-2      6/   \   / \8     -4 7   5 ......
  • 318二叉树遍历
    1#include<stdio.h>2#include<string.h>3#include<stdlib.h>4typedefstructtreenode{5chardata;6structtreenode*lchild;7structtreenode*rchild;8}treenode,*tree;910treecreateTree(char*preorder,char......