LeetCode#117. Populating Next Right Pointers in Each Node II

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

    }
}

不使用額外存儲空間

這裏寫代碼片
發佈了184 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章