题目
https://leetcode.com/problems/populating-next-right-pointers-in-each-node/description/
基本思路
- 看到二叉树我们就想到需要使用递归的思路了。
- 注意递归之外的细节:正是这些细节完成了实际的逻辑求解
我们以2号结点为例:为了繁衍next结点,仅需要处理两种微观情况:
case 1: 2 -> 3 :
Solution: root.left.next = root.right
case 2: 2 -> 5 -> 6:
Solution: root.right.next = root.next.left if root.next else None
2 -> 3
/ \ /
4->5->6
实现代码
# 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):
if root and root.left:
root.left.next = root.right
if root.next:
root.right.next = root.next.left
else:
root.right.next = None
self.connect(root.left)
self.connect(root.right)