[LeetCode]116 填充同一层的兄弟节点

题目描述

给定一个二叉树

1
2
3
4
5
struct TreeLinkNode {
TreeLinkNode *left;
TreeLinkNode *right;
TreeLinkNode *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL
初始状态下,所有 next 指针都被设置为 NULL

示例:

给定完美二叉树,

     1
    / \
  2     3
 / \   / \
4   5 6   7

调用你的函数后,该完美二叉树变为:

    1 -> NULL
   / \
  2 ->3 -> NULL
 / \  / \
4->5->6->7 -> NULL

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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):
start = root
while start:
cur = start
while cur and cur.left:
cur.left.next = cur.right
if cur.next:
cur.right.next = cur.next.left
cur = cur.next
start = start.left