zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    3年度研发项目情况项目目标文档
    2系统利益相关者描述案例
    讨论结果
    本学期《软件需求分析》需要掌握的内容(个人总结)
    第二周进度条
    四则运算
    第一周进度记录
    java web
    ke tang zuo ye
    2015-05-26 随笔
  • 原文地址:https://www.cnblogs.com/cong12586/p/13214229.html
Copyright © 2011-2022 走看看