- 題目:將一個二叉樹按照規則進行連接。規則爲:將節點的下一個指針指向下一個節點 (不能使用額外的存儲空間)
- 難度: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;
}
}
}
不使用額外存儲空間
這裏寫代碼片