题目
https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/description/
基本思路
和116题的区别在于,不再是一个完全二叉树了
时间:O(n) 空间:O(1)
实现代码
# Definition for binary tree with next pointer.
# class TreeLinkNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# self.next = None
class Solution:
# @param root, a tree link node
# @return nothing
def connect(self, root):
cur = root
# 按层次进行遍历
while cur:
# 前一个结点
pre = None
# 每一层的第一个结点
firstNode = None
# 处理每一层
while cur:
# 如果是每一层的第一个结点
if firstNode == None:
firstNode = cur.left if cur.left else cur.right
if cur.left:
# 跨越父结点
if pre:
pre.next = cur.left
# 第一个结点
pre = cur.left
if cur.right:
if pre:
pre.next = cur.right
pre = cur.right
cur = cur.next
cur = firstNode