0
点赞
收藏
分享

微信扫一扫

Leecode117填充每一个二叉树节点的右侧指针

宁静的猫 2022-01-05 阅读 35

给定一个二叉树

struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。

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

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

    Node() : val(0), left(NULL), right(NULL), next(NULL) {}

    Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {}

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

class Solution {
public:
    Node* connect(Node* root) {
        queue<Node*>qu;
        if(root!=NULL) qu.push(root);
        while(!qu.empty())
        {
            int size=qu.size();
            Node* prenode;
            Node* node;
            for(int i=0;i<size;i++)
            {
                if(i==0)
                {
                    prenode=qu.front();
                    qu.pop();
                    node=prenode;
                }
                else{
                    node=qu.front();
                    qu.pop();
                    prenode->next=node;
                    prenode=prenode->next;

                }
                if(node->left!=NULL) qu.push(node->left);
                if(node->right!=NULL) qu.push(node->right);

            }
           prenode->next=NULL;
        }
        return root;
    }
};
举报

相关推荐

0 条评论