Day 19 代码随想录


637. 二叉树的层平均值

**题目链接: **二叉树的层平均值
在这里插入图片描述
 这题本质上还是层序遍历,最后需要将二维数组展开成一维。二维数组变成一维

class Solution:
    def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]:
        result = []
        if not root:
            return []
        from collections import deque
        que = deque([root])
        while que:
            res = []
            size = len(que)
            Sum = 0
            for _ in range(size):
                cur = que.popleft()
                Sum += cur.val
                if cur.left:
                    que.append(cur.left)
                if cur.right:
                    que.append(cur.right)

            Average = Sum / size
            res.append(Average)
            result.append(res)
        return sum(result,[])

不要展开的方式

class Solution:
    """二叉树层平均值迭代解法"""

    def averageOfLevels(self, root: TreeNode) -> List[float]:
        results = []
        if not root:
            return results
        
        from collections import deque
        que = deque([root])
        
        while que:
            size = len(que)
            sum_ = 0
            for _ in range(size):
                cur = que.popleft()
                sum_ += cur.val
                if cur.left:
                    que.append(cur.left)
                if cur.right:
                    que.append(cur.right)
            results.append(sum_ / size)

        return results

429. N 叉树的层序遍历

N 叉树的层序遍历

注意extend与append的使用extend 与append

class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        result=[]
        if not root:
            return []
        from collections import deque
        que=deque([root])
        while que:
            res=[]
            size=len(que)
            for _ in range(size):

                cur=que.popleft()
                res.append(cur.val)
                #可能有很多个数字形成列表
                if cur.children:
                    que.extend(cur.children)
            result.append(res)
        return result

#116. 填充每个节点的下一个右侧节点指针
填充每个节点的下一个右侧节点指针
在这里插入图片描述
本题已经默认next 指向None,只不过在单层遍历的时候记录一下本层的头部节点,然后在遍历的时候让前一个节点指向本节点就可以了

class Solution:
    def connect(self, root: 'Optional[Node]') -> 'Optional[Node]':
        if not root:
            return None
        queue = [root]
        while queue:
            n = len(queue)
            for i in range(n):
                node = queue.pop(0)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
                # 循环退出
                if i == n - 1:
                    break
                node.next = queue[0]
        return root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值