import java.util.*; /** * 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) { if (root == null) { return; } TreeLinkNode leftmost = root ; while (leftmost.left != null) { TreeLinkNode node = leftmost ; while (node != null) { node.left.next = node.right; if(node.next != null) { node.right.next = node.next.left; } node = node.next; } leftmost = leftmost.left ; } } // 使用队列辅助 // public void connect(TreeLinkNode root) { // if (root == null) { // return; // } // Queue<TreeLinkNode> queue = new LinkedList<>(); // queue.add(root); // TreeLinkNode poll =null ; // while (queue.size() > 0) { // int size = queue.size(); // for (int i = 0 ; i < size; i++ ) { // poll = queue.poll(); // if(i == size - 1){ // poll.next = null; // }else{ // poll.next = queue.peek(); // } // if (poll.left != null) { // queue.offer (poll.left); // } // if (poll.right != null) { // queue.offer (poll.right); // } // } // } // } }
思路:1.按层解析
2.使用队列辅助
在符合完美 二叉树时,优先 方案1,因为只使用两个变量 无需额外引入 队列存储
方案2,变动后可以处理 非完美二叉树 的场景,但需要额外的空间