package code; /* * 116. Populating Next Right Pointers in Each Node * 颿ï¼è®¾ç½®äºåæ çnextæéï¼æååå±å³ä¾§èç¹ * é¾åº¦ï¼Medium * åç±»ï¼Tree, Depth-first Search * æè·¯ï¼èªå·±åçéå½ï¼ä¸é´æåä½ãè¿ä»£æ¹æ³åè¾ä¼çéå½ä¼å©ç¨å åå·²ç»è®¾ç½®çnextæéï¼åä¸ä¸æ¥æä½ * Tipsï¼å¤ä¹ æ¶å¤çä¸ä¸ï¼èªå·±æ²¡æ³èµ·æ¥å©ç¨å·²ç»è®¾ç½®å¥½çæé */ public class lc116 { public class TreeLinkNode { int val; TreeLinkNode left, right, next; TreeLinkNode(int x) { val = x; } } public void connect(TreeLinkNode root) { if(root==null) return; helper(root.left, root.right); } public void helper(TreeLinkNode root1, TreeLinkNode root2){//è¾æ ¢ï¼ä¹è½è¿ if( root1==null || root2==null ) return; root1.next = root2; helper(root1.left, root1.right); helper(root1.right, root2.left); //ä¼éå¤è®¾ç½® helper(root2.left,root2.right); } public void connect2(TreeLinkNode root) { while(root!=null){ TreeLinkNode start = root; while(start!=null){ if(start.left!=null){ start.left.next = start.right; //设置ä¸ä¸å±çnextæé if(start.next!=null){ start.right.next = start.next.left; } } start = start.next; } root = root.left; } } }