LeetCode 116 - Populating Next Right Pointers in Each Node (Medium)
作者:互联网
You are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition:
struct Node { int val; Node *left; Node *right; Node *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
.
Follow up:
- You may only use constant extra space.
- Recursive approach is fine, you may assume implicit stack space does not count as extra space for this problem.
Example 1:
Input: root = [1,2,3,4,5,6,7] Output: [1,#,2,3,#,4,5,6,7,#] Explanation: Given the above perfect binary tree (Figure A), your function should populate each next pointer to point to its next right node, just like in Figure B. The serialized output is in level order as connected by the next pointers, with '#' signifying the end of each level.
Constraints:
- The number of nodes in the given tree is less than
4096
. -1000 <= node.val <= 1000
方法:iteration
思路:
首先要注意题目中的是perfect binary tree。A perfect binary tree is a binary tree in which all interior nodes have two children and all leaves have the same depth or same level. An example of a perfect binary tree is the (non-incestuous) ancestry chart of a person to a given depth, as each person has exactly two biological parents (one mother and one father). 所以其实是降低了难度,因为不会存在只有右节点而没有左节点的情况之类的。用一个指针来一层层的处理即可
time complexity:O(n) space complexity :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 cur = root while cur.left: tmp = cur while tmp: tmp.left.next = tmp.right if tmp.next: tmp.right.next = tmp.next.left tmp = tmp.next cur = cur.left return root
标签:Node,tmp,Right,Pointers,tree,next,right,left 来源: https://www.cnblogs.com/sky37/p/13934895.html