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
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */ public class Solution { public void connect(TreeLinkNode root) { /*BFS*/ if (root == null) { return; } TreeLinkNode head = root; // use TreeLinkNode next feature as a queue TreeLinkNode newHead = null; TreeLinkNode iterating = null; int lastNum = 1; int curNum = 0; while ( head != null ) { TreeLinkNode cur = head; lastNum--; if (cur.left != null) { if (curNum == 0) { newHead = cur.left; iterating = newHead; } else { iterating.next = cur.left; iterating = iterating.next; } curNum++; } if ( cur.right != null ) { if ( curNum != 0 ) { iterating.next = cur.right; iterating = iterating.next; } //if(curNum == 0) //{ // newHead = cur.right; //} curNum++; } if ( lastNum == 0 ) { head = newHead; lastNum = curNum; curNum = 0; newHead = null; iterating = null; } else { head = head.next; } } } }
No comments:
Post a Comment