设为首页 加入收藏

TOP

[leetcode]Populating Next Right Pointers in Each Node @ Python [逻辑动力学]
2015-07-20 17:35:01 来源: 作者: 【 】 浏览:1
Tags:leetcode Populating Next Right Pointers Each Node Python 逻辑 动力学
题意:
?
? ? ? ? ?1
? ? ? ?/ ?\
? ? ? 2 ? ?3
? ? ?/ \ ?/ \
? ? 4 ?5 ?6 ?7
变为:
? ? ? ? ?1 -> NULL
? ? ? ?/ ?\
? ? ? 2 -> 3 -> NULL
? ? ?/ \ ?/ \
? ? 4->5->6->7 -> NULL
解题思路:这道题目充分展现了宏观和微观完美的在细节出水乳交融的具体过程.
?
1) 看到二叉树我们就想到需要使用递归的思路了。
?
2) 注意递归之外的细节:正式这些细节完成了实际的逻辑求解
?
我们以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
?
Solution 1: 这个方法是因为我无法记住网络上提供(比如下面的solution 2)的答案,然后就按照递归需要解决的基本问题 (也就是上面case 1 和 2),分别解决后,拼凑出来的解法。万岁!
结果我这个解法相当自然。
复制代码
class Solution:
? ? # @param root, a tree node
? ? # @return nothing
? ? def connect(self, root):
? ? ? ? def recursion(root):
? ? ? ? ? ? if root is None: return
? ? ? ? ? ? if root.left and root.right: root.left.next = root.right;?
? ? ? ? ? ? if root.right and root.next: root.right.next = root.next.left
? ? ? ? ? ? recursion(root.left)
? ? ? ? ? ? recursion(root.right)
? ? ? ? recursion(root)
复制代码
Solution 2:
?
?
?
复制代码
# Definition for a ?binary tree node
# class TreeNode:
# ? ? def __init__(self, x):
# ? ? ? ? self.val = x
# ? ? ? ? self.left = None
# ? ? ? ? self.right = None
# ? ? ? ? self.next = None
?
class Solution:
? ? # @param root, a tree node
? ? # @return nothing
? ? def connect(self, root):
? ? ? ? if root and root.left:
? ? ? ? ? ? root.left.next ?= root.right
? ? ? ? ? ? root.right.next = root.next.left if root.next else None
? ? ? ? ? ? self.connect(root.left)
? ? ? ? ? ? self.connect(root.right)
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces 385 D Bear and Flood.. 下一篇HDOJ 3157 Crazy Circuits

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 并发工具类:提 (2025-12-25 20:25:44)
·Java面试技巧:如何 (2025-12-25 20:25:41)
·Java并发编程中的线 (2025-12-25 20:25:38)
·C 语言 - cppreferen (2025-12-25 19:50:27)
·《C 语言入门教程》 (2025-12-25 19:50:23)