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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章