题目:
给定一颗完全二叉树,填充指向下一个右节点的每个next指针。如果没有下一个右节点,则next指针应该设置为NULL。
例如:
解题思路:
利用之前每一次构建的next指针(递归算法),对于每一个节点,先令其左孩子的next指针指向其右孩子,再判断该节点的next指针是否为空,为空,则让该节点的右孩子的next指针设置为NULL;否则将该节点的右孩子的next指针设置为该节点的next指针的左孩子,并将root设置为root.next进行下一次递归。
经过上述的重复过程,对于同一排的节点可以更新完成,每次保存该排的最左边孩子的节点,每排更新完成后,利用最左边孩子的节点进行下一排的更新。
代码:
# 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):
def Iteration(root):
if root.left!=None:
root.left.next = root.right
if root.next!=None:
root.right.next = root.next.left
Iteration(root.next)
else:
root.right.next = None
return root.left
else:
return None
if root==None:
return
while Iteration(root):
root = root.left