[leetcode] 116. 填充同一层的兄弟节点

116. 填充同一层的兄弟节点

其实就是个二叉树的层次遍历

class Solution {
    public void connect(TreeLinkNode root) {
        if (root == null) return;
        LinkedList<TreeLinkNode> queue = new LinkedList<>();
        queue.offer(root);

        TreeLinkNode flag = root;
        TreeLinkNode last = null;

        while (!queue.isEmpty()) {
            TreeLinkNode nowNode = queue.poll();

            if (last != null) {
                last.next = nowNode;
            }

            if (nowNode.left != null) queue.add(nowNode.left);
            if (nowNode.right != null) queue.add(nowNode.right);

            last = nowNode;

            if (flag == nowNode) {
                nowNode.next = null;
                flag = queue.peekLast();
                last = null;
            }
        }
    }
}
posted @ 2018-11-06 22:45  ACBingo  阅读(198)  评论(0编辑  收藏  举报