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
  • 相关阅读:
    Java练习题
    循环练习
    Java String类详解
    Collections类
    TreeSet类
    IOS基础:NSTimer类的使用
    IOS基础:深入理解Objectivec中@class的含义
    IOS基础:retain,copy,assign及autorelease
    IOS基础:ActionSheet(上拉菜单)的实现
    Xcode 模拟器生成目标目录位置查找
  • 原文地址:https://www.cnblogs.com/cong12586/p/13214229.html
Copyright © 2011-2022 走看看