VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 117.填充每个节点的下一个右侧节点指针II

# 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':
        head = root
        while head: # 当前层的头结点
            cur = head # 当前处理层
            pre,head = None,None # 初始化头结点和前置节点
            # 头部节点用来标识所处的层数,和用来退出最后的循环
            # 前置节点的意思用来记录当前节点上一个兄弟节点是什么,然后用于next指向
            while cur:
                if cur.left: # 判断左节点存在不存在
                    # 判断前置节点存在否,这里的意思就代表当前节点的左儿子是否为当前层第一个节点
                    if not pre: 
                        # 若果是的话,就定义头部节点和前置节点。
                        pre = head = cur.left
                    else:
                        # 不是的话,就将cur.left前边的兄弟节点与之相连,
                        pre.next = cur.left
                        # 然后前置节点右移。
                        pre = pre.next
                # 与上边是同一个道理
                if cur.right:
                    if not pre :
                        pre = head = cur.right
                    else:
                        pre.next = cur.right
                        pre = pre.next
                cur = cur.next
        return root
 
出处:https://www.cnblogs.com/cong12586/p/13214229.html


相关教程