[LeetCode#]Populating Next Right Pointers in Each Node

3402 단어 LeetCode
The problem:
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

     
    First solution :
    public class Solution {
    
        public void connect(TreeLinkNode root) {
    
            if (root == null)
    
                return;
    
            Queue<TreeLinkNode> queue = new LinkedList<TreeLinkNode> ();
    
            TreeLinkNode cur_node;
    
            int cur_num = 1;
    
            int next_num = 0;
    
            queue.offer(root);
    
            
    
            while (queue.size() != 0) {
    
                cur_node = queue.poll();
    
                cur_num--;
    
                if (cur_node.left != null) {
    
                    queue.offer(cur_node.left);
    
                    next_num++;
    
                }
    
                if (cur_node.right != null) {
    
                    queue.offer(cur_node.right);
    
                    next_num++;
    
                }
    
                if (cur_num != 0) {
    
                    cur_node.next = queue.peek();
    
                } else{
    
                    cur_node.next = null;
    
                    cur_num = next_num;
    
                    next_num = 0;
    
                }
    
            }
    
        }
    
    }

    좋은 웹페이지 즐겨찾기