[Leetcode]Populating Next Right Pointers in Each Node
来源:互联网 发布:nginx 隐藏版本 编辑:程序博客网 时间:2024/05/22 08:29
Given a binary tree
struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL
.
Initially, all next pointers are set to NULL
.
Note:
- You may only use constant extra space.
- You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,
Given the following perfect binary tree,
1 / \ 2 3 / \ / \ 4 5 6 7
After calling your function, the tree should look like:
1 -> NULL / \ 2 -> 3 -> NULL / \ / \ 4->5->6->7 -> NULL
把树的每一层都维护成一个链表~假设树是完全二叉树~题目要求只能用常数空间,所以不能用深度搜索,因为递归需要用栈;也不能用广度搜索,因为队列也需要占用空间~下面接法时间复杂度为O(n),空间复杂度为O(1)~
class Solution: # @param root, a tree node # @return nothing def connect(self, root): if root is None: return while root.left: curLevel = root while curLevel: curLevel.left.next = curLevel.right if curLevel.next: curLevel.right.next = curLevel.next.left curLevel = curLevel.next root = root.left
再附上递归解法~代码如下~
class Solution: # @param root, a tree node # @return nothing def connect(self, 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 self.connect(root.left) self.connect(root.right)
0 0
- 【LeetCode】Populating Next Right Pointers in Each Node Populating Next Right Pointers in Each Node II
- leetcode Populating Next Right Pointers in Each Node &&Populating Next Right Pointers in Each Node||
- LeetCode Populating Next Right Pointers in Each Node & Populating Next Right Pointers in Each Node I
- 【Leetcode】Populating Next Right Pointers in Each Node in JAVA
- LeetCode Populating Next Right Pointers in Each Node
- LeetCode Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node
- LeetCode: Populating Next Right Pointers in Each Node
- [Leetcode] Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node
- [LeetCode] Populating Next Right Pointers in Each Node II
- 【leetcode】 Populating Next Right Pointers in Each Node
- leetcode 78: Populating Next Right Pointers in Each Node
- leetcode 79: Populating Next Right Pointers in Each Node II
- Leetcode: Populating Next Right Pointers in Each Node
- [Leetcode] Populating Next Right Pointers in Each Node ii
- leetcode Populating Next Right Pointers in Each Node II
- 【leetcode】Populating Next Right Pointers in Each Node
- ubuntu下kinect+openni+nite+kinectsensor
- Eclipse设置自动代码提示
- Android 5.0的调度作业JobScheduler
- java getResourceAsStream返回空的问题
- log4j配置文件定义输出Appender和Layout
- [Leetcode]Populating Next Right Pointers in Each Node
- java面试题
- iOS 调用地图导航
- 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组
- PB显示图片相关
- 第一个驱动程序的完成过程
- 在项目中,如何应对需求的变更?
- 20種死機案例實錄與如何面對電腦死機
- BIOS升級失敗的處理