leetcode 117. 填充每个节点的下一个右侧节点指针 II

2023.6.30

leetcode 117. 填充每个节点的下一个右侧节点指针 II_第1张图片

        和 leetcode 116. 填充每个节点的下一个右侧节点指针类似,区别就是116是完全二叉树,现在是普通二叉树,依然可以用层序遍历的方式,下面上代码:

class Solution {
public:
    Node* connect(Node* root) {
        queue que;
        if(root == nullptr) return{};
        que.push(root);
        while(!que.empty())
        {
            int size = que.size();
            while(size--)
            {
                Node* node = que.front();
                que.pop();
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
                if(size != 0)
                {
                    Node* next_node = que.front();
                    node->next = next_node;
                }
            }
        }        
        return root;
    }
};

        内循环里做了一点小小的修改:因为题意说了所有next指针会初始化为NULL,就没必要手动把最后一个节点赋为NULL了,只需要将非最后一个节点的next指针赋为其下一个节点就行。

你可能感兴趣的:(leetcode专栏,leetcode,算法,职场和发展,数据结构)