LeetCode Populating Next Right Pointers in Each Node
Posted blfbuaa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Populating Next Right Pointers in Each Node相关的知识,希望对你有一定的参考价值。
LeetCode解题之Populating Next Right Pointers in Each Node
原题
为二叉树的节点都加入一个next指针,指向跟它在同一高度的右边的节点,假设右边没有节点,就指向None。
注意点:
- 最好仅仅用常量的空间
- 这是一棵全然二叉树
样例:
输入:
1
/ 2 3
/ \ / 4 5 6 7
输出:
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ / \
4->5->6->7 -> NULL
解题思路
这里採用了思路最清晰的解法,可是用的空间不是常量的。能够看出事实上就是把树的每一层都串联起来了。要处理每一层的节点。能够使用广度优先遍历,把每一层的节点暂存在列表中。再把这些节点都连接起来。
AC源代码
# Definition for binary tree with next pointer.
class TreeLinkNode(object):
def __init__(self, x):
self.val = x
self.left = None
self.right = None
self.next = None
class Solution(object):
def connect(self, root):
"""
:type root: TreeLinkNode
:rtype: nothing
"""
if not root:
return
current_level = [root]
while current_level:
next_level = []
for node in current_level:
if node.left:
next_level.append(node.left)
if node.right:
next_level.append(node.right)
for i in range(len(next_level) - 1):
next_level[i].next = next_level[i + 1]
current_level = next_level
if __name__ == "__main__":
None
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源代码。
以上是关于LeetCode Populating Next Right Pointers in Each Node的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 116. Populating Next Right Pointers in Each Node
LeetCode Populating Next Right Pointers in Each Node II
LeetCode 116 Populating Next Right Pointers in Each Node
LeetCode-116-Populating Next Right Pointers in Each Node
leetcode 116. Populating Next Right Pointers in Each Node
leetcode@ [116/117] Populating Next Right Pointers in Each Node I & II (Tree, BFS)