Given a binary tree
struct Treelinknode { treelinknode *left; Treelinknode *right; Treelinknode *next; }
?
Populate each of the next pointer to the next right node. If there is no. next right node, the next pointer should are set to? NULL
.
Initially, all next pointers is set to? NULL
.
Solution:
Public class solution { PublicvoidConnect (Treelinknode root) {if(root==NULL) return; queue<treelinknode> queue =Newlinkedlist<treelinknode> (); Queue.add (root); Treelinknode current; while(!queue.isempty ()) {current=queue.remove (); if(current.left==NULL&& current.right==NULL) Continue;
The next pointer problem for non-leaf nodes is addressed belowif(current.left!=NULL&& current.right!=NULL) Current.left.next = current.right; if(current.next!=NULL){ if(current.right==NULL) Current.left.next = current.next.left!=NULL? current.next.left:current.next.right; ElseCurrent.right.next = current.next.left!=NULL? current.next.left:current.next.right; }
Put the next layer of nodes into a queueif(current.left!=NULL) Queue.add (current.left); if(current.right!=NULL) Queue.add (current.right); } }}
leetcode#116 populating Next right pointers in each Node