LeetCode解题心得——填充每个节点的下一个右侧节点指针(python)
2020-04-24 08:03
513 查看
题目
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
示例:
提示:
你只能使用常量级额外空间。
使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。
思路
1.BFS
时间复杂度O(n),空间复杂度O(n)
""" # Definition for a Node. class Node: def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None): self.val = val self.left = left self.right = right self.next = next """ class Solution: def connect(self, root: 'Node') -> 'Node': if not root: return queue = [root] while queue: size = len(queue) for i in range(size): cur = queue.pop(0) if i < size-1: cur.next = queue[0] if cur.left: queue.append(cur.left) if cur.right: queue.append(cur.right) return root
2.https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/solution/dong-hua-yan-shi-san-chong-shi-xian-116-tian-chong/
时间复杂度O(n),空间复杂度O(1)
""" # Definition for a Node. class Node: def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None): self.val = val self.left = left self.right = right self.next = next """ class Solution: def connect(self, root: 'Node') -> 'Node': if not root: return ROOT = root while root.left: tmp = root while tmp: tmp.left.next = tmp.right if tmp.next: tmp.right.next = tmp.next.left tmp = tmp.next root = root.left return ROOT
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- LeetCode解题心得——填充每个节点的下一个右侧节点指针 II(python)
- 利用python 完成leetcode 116 填充每个节点的下一个右侧节点指针
- 利用python 完成leetcode 117 填充每个节点的下一个右侧节点指针 II
- leetcode 填充每个节点的下一个右侧节点指针
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II
- LeetCode 116. 填充每个节点的下一个右侧节点指针
- leetcode-116-填充每个节点的下一个右侧节点指针
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II
- Leetcode 117. 填充每个节点的下一个右侧节点指针 II
- Leetcode 116. 填充每个节点的下一个右侧节点指针
- LeetCode 117. 填充每个节点的下一个右侧节点指针 II
- LeetCode 116. 填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 116填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 填充每个节点的下一个右侧节点指针
- 117填充每个节点的下一个右侧节点指针 II
- 跟进问题“在每个节点中填充下一个正确的指针”。层次遍历二叉树