0
点赞
收藏
分享

微信扫一扫

leetcode学习笔记——层序遍历(429,515,116,104,111)

三次方 2022-03-14 阅读 50
leetcode

429. N 叉树的层序遍历

在这里插入图片描述
在这里插入图片描述

"""
# Definition for a Node.
class Node:
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution:
    def levelOrder(self, root: 'Node') -> List[List[int]]:
        if not  root:
            return []
        res = []
        temps = [root]
        while temps:
            temp = []
            re = []
            for i in range(len(temps)):
                re.append(temps[i].val)
                if temps[i].children:
                    temp.extend(temps[i].children) 
            res.append(re)
            temps = temp
        return res
                

515. 在每个树行中找最大值

在这里插入图片描述

# 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 largestValues(self, root: Optional[TreeNode]) -> List[int]:
        if not root:
            return []
        res = []
        temps = [root]
        while temps:
            temp = []
            re = temps[0].val
            for i in range(len(temps)):
                re = max(re,temps[i].val)
                if temps[i].left:
                    temp.append(temps[i].left)
                if temps[i].right:
                    temp.append(temps[i].right)
            res.append(re)
            temps = temp
        return res

116. 填充每个节点的下一个右侧节点指针

在这里插入图片描述
在这里插入图片描述

"""
# Definition for a Node.
class Node:
    def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
        self.val = val
        self.left = left
        self.right = right
        self.next = next
"""
class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if not root:
            return 
        temps = [root]
        while temps:
            temp = []
            for i in range(len(temps)-1):
                temps[i].next = temps[i+1]
                if temps[i].left:
                    temp.append(temps[i].left)
                if temps[i].right:
                    temp.append(temps[i].right)
            temps[-1].next = None
            if temps[-1].left:
                temp.append(temps[-1].left)
            if temps[-1].right:
                temp.append(temps[-1].right)
            temps = temp

        return root

104. 二叉树的最大深度

在这里插入图片描述

# 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 maxDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        count = 0 
        temps = [root]
        while temps:
            temp = []
            for i in range(len(temps)):
                if temps[i].left:
                    temp.append(temps[i].left)
                if temps[i].right:
                    temp.append(temps[i].right)
            
            temps = temp
            count += 1
        return count

111. 二叉树的最小深度

在这里插入图片描述
在这里插入图片描述

# 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 minDepth(self, root: TreeNode) -> int:
        if not root:
            return 0
        count = 0 
        temps = [root]
        while temps:
            temp = []
            for i in range(len(temps)):
                if temps[i].left:
                    temp.append(temps[i].left)
                if temps[i].right:
                    temp.append(temps[i].right)
                if not temps[i].left and not temps[i].right:
                    return count+1
            temps = temp
            count += 1
        return count
举报

相关推荐

0 条评论