- 题目:将一个二叉树按照规则进行连接。规则为:将节点的下一个指针指向下一个节点 (不能使用额外的存储空间)
- 难度:Medium
- 思路:由于题目要求中的二叉树不再是完全二叉树,因此116题的方法不能直接套用。于是在不考虑额外空间的条件下,给出一个非最优解:利用队列来实现
- 代码:
不考虑“不能使用额外存储空间”
public class Solution {
public void connect(TreeLinkNode root) {
if(root == null){
return ;
}
LinkedList<TreeLinkNode> queue = new LinkedList<>();
queue.offer(root);
while(queue.size() > 0){
int size = queue.size();
TreeLinkNode pre = queue.poll();
TreeLinkNode curr = null;
if(pre.left != null){
queue.offerLast(pre.left);
}
if(pre.right != null){
queue.offerLast(pre.right);
}
for(int i = 1; i < size; i++){
curr = queue.poll();
pre.next = curr;
pre = curr;
if(pre.left != null){
queue.offerLast(pre.left);
}
if(pre.right != null){
queue.offerLast(pre.right);
}
}
pre.next = null;
}
}
}
不使用额外存储空间
这里写代码片