赞
踩
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node { int val; Node *left; Node *right; Node *next; }
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL
。
初始状态下,所有 next 指针都被设置为 NULL
。
示例:
输入:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":null,"right":null,"val":4},"next":null,"right":{"$id":"4","left":null,"next":null,"right":null,"val":5},"val":2},"next":null,"right":{"$id":"5","left":{"$id":"6","left":null,"next":null,"right":null,"val":6},"next":null,"right":{"$id":"7","left":null,"next":null,"right":null,"val":7},"val":3},"val":1} 输出:{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":{"$id":"4","left":null,"next":{"$id":"5","left":null,"next":{"$id":"6","left":null,"next":null,"right":null,"val":7},"right":null,"val":6},"right":null,"val":5},"right":null,"val":4},"next":{"$id":"7","left":{"$ref":"5"},"next":null,"right":{"$ref":"6"},"val":3},"right":{"$ref":"4"},"val":2},"next":null,"right":{"$ref":"7"},"val":1} 解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。
提示:
解题思路:对二叉树中的任意一个节点node,判断其是否有右孩子节点,若有,则将左孩子指向右孩子,并且判断node是否有下一个节点,若有,则将node的右孩子节点指向下一个节点的左孩子节点。然后递归对node的左孩子右孩子节点进行上述操作,最后返回根节点即可。
Python3代码如下:
- """
- # Definition for a Node.
- class Node(object):
- def __init__(self, val, left, right, next):
- self.val = val
- self.left = left
- self.right = right
- self.next = next
- """
- class Solution(object):
- def connect(self, root):
- """
- :type root: Node
- :rtype: Node
- """
- if not root:
- return root
- if root.right:
- root.left.next = root.right
- if root.next:
- root.right.next = root.next.left
- self.connect(root.left)
- self.connect(root.right)
- return root

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。