Q:给定一个二叉树
struct TreeLinkNode {↵ TreeLinkNode *left;↵ TreeLinkNode *right;↵ TreeLinkNode *next;↵ }
填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。
初始时,所有的next指针都为NULL
注意:
你只能使用常量级的额外内存空间

A:
层次遍历,记录每层个数,把每层内连起来

    public static void connect(TreeLinkNode root) {
        if(root == null)
            return;
        Queue<TreeLinkNode> queue = new LinkedList<>();
        int layer = 1;
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeLinkNode last = new TreeLinkNode(Integer.MIN_VALUE);
            while (layer-- != 0) {
                TreeLinkNode node = queue.poll();
                if (last.val != Integer.MIN_VALUE)
                    last.next = node;
                last = node;
                if (node.left != null)
                    queue.offer(node.left);
                if (node.right != null)
                    queue.offer(node.right);
            }
            layer = queue.size();
            last.next = null;
        }
    }

相关文章:

  • 2021-05-29
  • 2021-11-01
  • 2021-10-22
  • 2021-06-15
  • 2021-11-01
  • 2022-12-23
  • 2021-12-02
猜你喜欢
  • 2021-06-11
  • 2021-09-29
  • 2021-07-06
  • 2021-11-07
  • 2022-02-23
  • 2021-06-25
  • 2021-04-02
相关资源
相似解决方案