给定一个二叉树
struct Node {
int val;
Node *left;
Node *right;
Node *next;
}
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。
初始状态下,所有 next 指针都被设置为 NULL。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路跟116一样;
这里在写的过程中不小心把root写在了循环条件上这个时候是超时
C++ 版本
/* // 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*> que; if(root != NULL){ que.push(root); } while(!que.empty()){ int size = que.size(); for(int i=0;i<size;i++){ Node* node = que.front(); que.pop(); if(i<size-1){ node->next = que.front(); } if(node->left) que.push(node->left); if(node->right) que.push(node->right); } } return root; } };