【每日一题】117. 填充每个节点的下一个右侧节点指针 II-2023.11.3

题目:

给定一个二叉树:

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

初始状态下,所有 next 指针都被设置为 NULL 。

【每日一题】117. 填充每个节点的下一个右侧节点指针 II-2023.11.3_第1张图片

解答:

【每日一题】117. 填充每个节点的下一个右侧节点指针 II-2023.11.3_第2张图片

代码:

/*
// Definition for a Node.
class Node {
    public int val;
    public Node left;
    public Node right;
    public Node next;

    public Node() {}
    
    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, Node _left, Node _right, Node _next) {
        val = _val;
        left = _left;
        right = _right;
        next = _next;
    }
};
*/

class Solution {
    public Node connect(Node root) {
        if(root==null){
            return null;
        }
        Queue queue=new ArrayDeque();
        queue.offer(root);
        while(!queue.isEmpty()){
            int n=queue.size();
            Node last=null;
            for(int i=1;i<=n;i++){
                Node f=queue.poll();
                if(f.left!=null){
                    queue.offer(f.left);
                }
                if(f.right!=null){
                    queue.offer(f.right);
                }
                if(i!=1){
                    last.next=f;
                }
                last=f;
            }
        }
        return root;
    }
}

结果:

【每日一题】117. 填充每个节点的下一个右侧节点指针 II-2023.11.3_第3张图片

你可能感兴趣的:(leetcode刷题笔记,算法,数据结构,leetcode)