题目描述链接:https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/
解题思路:此题的主要要求就是将二叉树的每个节点域除left,right指针外,新建一个next指针用于指向其节点的右侧
节点。考虑到其每个右侧节点都位于二叉树的同一层,因此可以采取层次遍历的方式,依次访问每一层的节点,对于
每一层节点实现其指向右侧节点。具体解题代码如下:
1 /* 2 // Definition for a Node. 3 class Node { 4 public: 5 int val; 6 Node* left; 7 Node* right; 8 Node* next; 9 10 Node() : val(0), left(NULL), right(NULL), next(NULL) {} 11 12 Node(int _val) : val(_val), left(NULL), right(NULL), next(NULL) {} 13 14 Node(int _val, Node* _left, Node* _right, Node* _next) 15 : val(_val), left(_left), right(_right), next(_next) {} 16 }; 17 */ 18 19 class Solution { 20 public: 21 Node* connect(Node* root) { 22 //层次遍历解题 23 queue<Node* >Q;//存储每层节点 24 Q.push(root); 25 while(!Q.empty()&&root){ 26 int len=Q.size(); 27 for(int i=0;i<len;i++){ 28 Node* temp=Q.front(); 29 if(i!=len-1){ 30 Q.pop(); 31 temp->next=Q.front(); 32 } 33 else{ 34 Q.pop(); 35 } 36 if(temp->left){ 37 Q.push(temp->left); 38 } 39 if(temp->right){ 40 Q.push(temp->right); 41 } 42 43 } 44 } 45 return root; 46 47 48 49 } 50 };