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

题目描述

给定一个二叉树

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

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

示例:

给定二叉树,

    1
   / \
  2   3
 / \   \
4   5   7

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

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

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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):
while root:
node = dummy = TreeLinkNode(0)
while root:
if root.left:
node.next = node = root.left

if root.right:
node.next = node = root.right

root = root.next
root = dummy.next