编程语言
首页 > 编程语言> > LeetCode 116 - Populating Next Right Pointers in Each Node (Medium)

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:

 

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:

方法: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