节点类型是:
struct Node{
Node * left;
Node* right;
Node* neighbor;// neighbor用来指示同层的下一个邻居节点
}
要求写一算法把树的所有neighbor指针初始化。
递归解法如下:
void link(Node * node){
if(node->left!=null&&node->right!=null){
node->left->neighbor=node->right;
}
if(node->neighbor!=null){
node->right->neighbor=node->neighbor->left;
}
if(node->left!=null){
link(node->left);
}
if(node->right!=null){
link(node->right);
}
}