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,变动后可以处理 非完美二叉树 的场景,但需要额外的空间



京公网安备 11010502036488号