leetcode-116-填充每个节点的下一个右侧节点指针
2019-07-14 20:46
381 查看
原文链接:http://www.cnblogs.com/oldby/p/11185617.html
题目描述:
输入:{"$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 所示。
方法一:递归:
class Solution: def connect(self, root: 'Node') -> 'Node': if not root: return if root.left: root.left.next = root.right if root.next: root.right.next = root.next.left self.connect(root.left) self.connect(root.right) return root
方法二:迭代:
class Solution: def connect(self, root: 'Node') -> 'Node': pre = root while pre: cur = pre while cur: if cur.left: cur.left.next = cur.right if cur.right and cur.next: cur.right.next = cur.next.left cur = cur.next pre = pre.left return root
转载于:https://www.cnblogs.com/oldby/p/11185617.html
相关文章推荐
- 利用python 完成leetcode 116 填充每个节点的下一个右侧节点指针
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II
- LeetCode 116. 填充每个节点的下一个右侧节点指针
- 利用python 完成leetcode 117 填充每个节点的下一个右侧节点指针 II
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II
- 填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 跟进问题“在每个节点中填充下一个正确的指针”。层次遍历二叉树
- [Leetcode] Populating next right pointer in each node 填充每个节点的右指针
- Leetcode 116 Populating Next Right Pointers in Each Node 二叉树填充next指针指向右侧结点
- [LeetCode] 116. Populating Next Right Pointers in Each Node 每个节点的右向指针
- 【二叉树的递归】06填充每个节点中的下一个正确的指针【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] - 填充每一个节点的指向右边邻居的指针I & II (Populating Next Right Pointers in Each Node I & II)
- [Leetcode] Populating next right pointer in each node ii 填充每个节点的右指针
- [LeetCode 116 117] - 填充每一个节点的指向右边邻居的指针I & II (Populating Next Right Pointers in Each Node I & II)
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个rand指针指向这个链表中的一个随机节点或NULL,现在要求复制一个单链表来实现这个链表,返回复制后的新链表。