美文网首页
python实现leetcode之117. 填充每个节点的下一个

python实现leetcode之117. 填充每个节点的下一个

作者: 深圳都这么冷 | 来源:发表于2021-10-02 00:07 被阅读0次

    解题思路

    使用队列进行广度优先遍历,附带上深度
    如果该节点的深度与前一节点的深度相同,就指向前一节点
    所以必须先右后左入队列

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

    代码

    """
    # Definition for a Node.
    class Node(object):
        def __init__(self, val=0, left=None, right=None, next=None):
            self.val = val
            self.left = left
            self.right = right
            self.next = next
    """
    
    class Solution(object):
        def connect(self, root):
            """
            :type root: Node
            :rtype: Node
            """
            if root:
                queue = [(root, 0)]
                prev_node, prev_depth = None, None
                while queue:
                    node, lv = queue.pop()
                    if lv == prev_depth:
                        node.next = prev_node
                    prev_node, prev_depth = node, lv
                    if node.right: queue.insert(0, (node.right, lv+1))
                    if node.left: queue.insert(0, (node.left, lv+1))
            return root
    
    效果图

    相关文章

      网友评论

          本文标题:python实现leetcode之117. 填充每个节点的下一个

          本文链接:https://www.haomeiwen.com/subject/ejyunltx.html