做一下笔记
/*
// 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:
//递归比较直接,左边的next是右边的节点,感觉这样好理解
//每两个相邻节点自身的左右节点相连,左节点的右节点与右节点的左节点相连
void con(Node* left, Node* right)
{
if(left == NULL && right == NULL)
{
return;
}
left->next = right;
con(left->left,left->right); //左节点的左节点指向左节点的右节点
con(left->right,right->left); //左节点的右节点指向右节点的左节点
con(right->left,right->right); //右节点的左节点指向右节点的右节点
}
Node* connect(Node* root) {
if(root == NULL)
{
return NULL;
}
con(root->left, root->right);
return root;
}
};