#include<stdio.h>
#include<malloc.h>
struct node
{
int data;
struct node* left;
struct node* right;
struct node* next;
};
typedef struct node Node;
void AddNode(Node* root, int number)
{
if(root->data==number)
return;
else if(root->data>number)
{
if(root->left!=NULL)
{
AddNode(root->left,number);
}
else
{
Node
* newNode
= (Node
*)malloc(sizeof(Node
)); newNode->data = number;
newNode->left = NULL;
newNode->right= NULL;
newNode->next= NULL;
root->left = newNode;
}
}
else if(root->data<number)
{
if(root->right!=NULL)
{
AddNode(root->right,number);
}
else
{
Node
* newNode
= (Node
*)malloc(sizeof(Node
)); newNode->data = number;
newNode->left = NULL;
newNode->right= NULL;
newNode->next= NULL;
root->right= newNode;
}
}
}
void MarkSibling(Node* root, Node* firstChild)
{
while(root!=NULL&&firstChild!=NULL)
{
Node *nextFirstChild = NULL,*rootTemp,*currChild;
currChild = firstChild;
printf("\n%d\t",currChild
->data
); if(root->right!=NULL&&root->right->data!=firstChild->data)
{
currChild->next = root->right;
if(nextFirstChild==NULL&&currChild->left!=NULL)
{
nextFirstChild = currChild->left;
firstChild = currChild;
}
else if(nextFirstChild==NULL&&currChild->right!=NULL)
{
nextFirstChild = currChild->right;
firstChild = currChild;
}
currChild = currChild->next;
printf("%d\t",currChild
->data
); }
rootTemp = root->next;
while(rootTemp!=NULL)
{
if(rootTemp->left!=NULL)
{
currChild->next = rootTemp->left;
if(nextFirstChild==NULL&&currChild->left!=NULL)
{
nextFirstChild = currChild->left;
firstChild = currChild;
}
else if(nextFirstChild==NULL&&currChild->right!=NULL)
{
nextFirstChild = currChild->right;
firstChild = currChild;
}
currChild = currChild->next;
printf("%d\t",currChild
->data
); }
if(rootTemp->right!=NULL)
{
currChild->next = rootTemp->right;
if(nextFirstChild==NULL&&currChild->left!=NULL)
{
nextFirstChild = currChild->left;
firstChild = currChild;
}
else if(nextFirstChild==NULL&&currChild->right!=NULL)
{
nextFirstChild = currChild->right;
firstChild = currChild;
}
currChild = currChild->next;
printf("%d\t",currChild
->data
); }
rootTemp = rootTemp->next;
}
if(nextFirstChild==NULL&&currChild->left!=NULL)
{
nextFirstChild = currChild->left;
firstChild = currChild;
}
else if(nextFirstChild==NULL&&currChild->right!=NULL)
{
nextFirstChild = currChild->right;
firstChild = currChild;
}
currChild->next = NULL;
root = firstChild;
firstChild = nextFirstChild;
}
}
int main()
{
Node
* root
= (Node
*)malloc(sizeof(Node
)); root->data = 4;
root->left = NULL;
root->right= NULL;
root->next= NULL;
AddNode(root,3);
AddNode(root,7);
AddNode(root,1);
AddNode(root,2);
AddNode(root,6);
AddNode(root,9);
AddNode(root,17);
AddNode(root,11);
AddNode(root,10);
AddNode(root,3);
AddNode(root,4);
if(root->left!=NULL)
MarkSibling(root,root->left);
else
MarkSibling(root,root->right);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8bWFsbG9jLmg+CgpzdHJ1Y3Qgbm9kZQp7CiAgaW50IGRhdGE7CiAgc3RydWN0IG5vZGUqIGxlZnQ7CiAgc3RydWN0IG5vZGUqIHJpZ2h0OwogIHN0cnVjdCBub2RlKiBuZXh0Owp9OwoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSBOb2RlOwoKdm9pZCBBZGROb2RlKE5vZGUqIHJvb3QsIGludCBudW1iZXIpCnsJCglpZihyb290LT5kYXRhPT1udW1iZXIpCgkJcmV0dXJuOwoJZWxzZSBpZihyb290LT5kYXRhPm51bWJlcikKCXsKCQlpZihyb290LT5sZWZ0IT1OVUxMKQoJCXsKCQkJQWRkTm9kZShyb290LT5sZWZ0LG51bWJlcik7CgkJfQoJCWVsc2UKCQl7CgkJCU5vZGUqIG5ld05vZGUgPSAoTm9kZSopbWFsbG9jKHNpemVvZihOb2RlKSk7CgkJCW5ld05vZGUtPmRhdGEgPSBudW1iZXI7CgkJCW5ld05vZGUtPmxlZnQgPSBOVUxMOwoJCQluZXdOb2RlLT5yaWdodD0gTlVMTDsKCQkJbmV3Tm9kZS0+bmV4dD0gTlVMTDsKCQkJcm9vdC0+bGVmdCA9IG5ld05vZGU7CgkJfQoJfQoJZWxzZSBpZihyb290LT5kYXRhPG51bWJlcikKCXsKCQlpZihyb290LT5yaWdodCE9TlVMTCkKCQl7CgkJCUFkZE5vZGUocm9vdC0+cmlnaHQsbnVtYmVyKTsKCQl9CgkJZWxzZQoJCXsKCQkJTm9kZSogbmV3Tm9kZSA9IChOb2RlKiltYWxsb2Moc2l6ZW9mKE5vZGUpKTsKCQkJbmV3Tm9kZS0+ZGF0YSA9IG51bWJlcjsKCQkJbmV3Tm9kZS0+bGVmdCA9IE5VTEw7CgkJCW5ld05vZGUtPnJpZ2h0PSBOVUxMOwoJCQluZXdOb2RlLT5uZXh0PSBOVUxMOwoJCQlyb290LT5yaWdodD0gbmV3Tm9kZTsKCQl9Cgl9Cn0KCnZvaWQgTWFya1NpYmxpbmcoTm9kZSogcm9vdCwgTm9kZSogZmlyc3RDaGlsZCkKewogICB3aGlsZShyb290IT1OVUxMJiZmaXJzdENoaWxkIT1OVUxMKQogICB7CQoJTm9kZSAqbmV4dEZpcnN0Q2hpbGQgPSBOVUxMLCpyb290VGVtcCwqY3VyckNoaWxkOwoJY3VyckNoaWxkID0gZmlyc3RDaGlsZDsKCQoJcHJpbnRmKCJcbiVkXHQiLGN1cnJDaGlsZC0+ZGF0YSk7CglpZihyb290LT5yaWdodCE9TlVMTCYmcm9vdC0+cmlnaHQtPmRhdGEhPWZpcnN0Q2hpbGQtPmRhdGEpCgl7CgkJY3VyckNoaWxkLT5uZXh0ID0gcm9vdC0+cmlnaHQ7CgkJaWYobmV4dEZpcnN0Q2hpbGQ9PU5VTEwmJmN1cnJDaGlsZC0+bGVmdCE9TlVMTCkKCQl7CgkJCW5leHRGaXJzdENoaWxkID0gY3VyckNoaWxkLT5sZWZ0OwoJCQlmaXJzdENoaWxkID0gY3VyckNoaWxkOwoJCX0KCQllbHNlIGlmKG5leHRGaXJzdENoaWxkPT1OVUxMJiZjdXJyQ2hpbGQtPnJpZ2h0IT1OVUxMKQoJCXsKCQkJbmV4dEZpcnN0Q2hpbGQgPSBjdXJyQ2hpbGQtPnJpZ2h0OwoJCQlmaXJzdENoaWxkID0gY3VyckNoaWxkOwoJCX0KCQljdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQ7CgkJcHJpbnRmKCIlZFx0IixjdXJyQ2hpbGQtPmRhdGEpOwoJfQoKCXJvb3RUZW1wID0gcm9vdC0+bmV4dDsKCQoJd2hpbGUocm9vdFRlbXAhPU5VTEwpCgl7CgkJaWYocm9vdFRlbXAtPmxlZnQhPU5VTEwpCgkJewkKCQkJY3VyckNoaWxkLT5uZXh0ID0gcm9vdFRlbXAtPmxlZnQ7CgkJCWlmKG5leHRGaXJzdENoaWxkPT1OVUxMJiZjdXJyQ2hpbGQtPmxlZnQhPU5VTEwpCgkJCXsKCQkJCW5leHRGaXJzdENoaWxkID0gY3VyckNoaWxkLT5sZWZ0OwoJCQkJZmlyc3RDaGlsZCA9IGN1cnJDaGlsZDsKCQkJfQoJCQllbHNlIGlmKG5leHRGaXJzdENoaWxkPT1OVUxMJiZjdXJyQ2hpbGQtPnJpZ2h0IT1OVUxMKQoJCQl7CgkJCQluZXh0Rmlyc3RDaGlsZCA9IGN1cnJDaGlsZC0+cmlnaHQ7CgkJCQlmaXJzdENoaWxkID0gY3VyckNoaWxkOwoJCQl9CgkJCWN1cnJDaGlsZCA9IGN1cnJDaGlsZC0+bmV4dDsKCQkJcHJpbnRmKCIlZFx0IixjdXJyQ2hpbGQtPmRhdGEpOwkKCQl9CgkJaWYocm9vdFRlbXAtPnJpZ2h0IT1OVUxMKQoJCXsJCgkJCWN1cnJDaGlsZC0+bmV4dCA9IHJvb3RUZW1wLT5yaWdodDsKCQkJaWYobmV4dEZpcnN0Q2hpbGQ9PU5VTEwmJmN1cnJDaGlsZC0+bGVmdCE9TlVMTCkKCQkJewoJCQkJbmV4dEZpcnN0Q2hpbGQgPSBjdXJyQ2hpbGQtPmxlZnQ7CgkJCQlmaXJzdENoaWxkID0gY3VyckNoaWxkOwoJCQl9CgkJCWVsc2UgaWYobmV4dEZpcnN0Q2hpbGQ9PU5VTEwmJmN1cnJDaGlsZC0+cmlnaHQhPU5VTEwpCgkJCXsKCQkJCW5leHRGaXJzdENoaWxkID0gY3VyckNoaWxkLT5yaWdodDsKCQkJCWZpcnN0Q2hpbGQgPSBjdXJyQ2hpbGQ7CgkJCX0KCQkJY3VyckNoaWxkID0gY3VyckNoaWxkLT5uZXh0OwoJCQlwcmludGYoIiVkXHQiLGN1cnJDaGlsZC0+ZGF0YSk7CQoJCX0KCQlyb290VGVtcCA9IHJvb3RUZW1wLT5uZXh0OwoJfQoJaWYobmV4dEZpcnN0Q2hpbGQ9PU5VTEwmJmN1cnJDaGlsZC0+bGVmdCE9TlVMTCkKCXsKCQluZXh0Rmlyc3RDaGlsZCA9IGN1cnJDaGlsZC0+bGVmdDsKCQlmaXJzdENoaWxkID0gY3VyckNoaWxkOwoJfQoJZWxzZSBpZihuZXh0Rmlyc3RDaGlsZD09TlVMTCYmY3VyckNoaWxkLT5yaWdodCE9TlVMTCkKCXsKCQluZXh0Rmlyc3RDaGlsZCA9IGN1cnJDaGlsZC0+cmlnaHQ7CgkJZmlyc3RDaGlsZCA9IGN1cnJDaGlsZDsKCX0KCQoJY3VyckNoaWxkLT5uZXh0ID0gTlVMTDsKCXJvb3QgPSBmaXJzdENoaWxkOwoJZmlyc3RDaGlsZCA9IG5leHRGaXJzdENoaWxkOwogICB9Cn0KCgppbnQgbWFpbigpCnsKCU5vZGUqIHJvb3QgPSAoTm9kZSopbWFsbG9jKHNpemVvZihOb2RlKSk7Cglyb290LT5kYXRhID0gNDsKCXJvb3QtPmxlZnQgPSBOVUxMOwoJcm9vdC0+cmlnaHQ9IE5VTEw7Cglyb290LT5uZXh0PSBOVUxMOwoKCUFkZE5vZGUocm9vdCwzKTsKCUFkZE5vZGUocm9vdCw3KTsKCUFkZE5vZGUocm9vdCwxKTsKCUFkZE5vZGUocm9vdCwyKTsKCUFkZE5vZGUocm9vdCw2KTsKCUFkZE5vZGUocm9vdCw5KTsKCUFkZE5vZGUocm9vdCwxNyk7CglBZGROb2RlKHJvb3QsMTEpOwoJQWRkTm9kZShyb290LDEwKTsKCUFkZE5vZGUocm9vdCwzKTsKCUFkZE5vZGUocm9vdCw0KTsKCQoJcHJpbnRmKCIlZCIscm9vdC0+ZGF0YSk7CglpZihyb290LT5sZWZ0IT1OVUxMKQoJCU1hcmtTaWJsaW5nKHJvb3Qscm9vdC0+bGVmdCk7CgllbHNlCgkJTWFya1NpYmxpbmcocm9vdCxyb290LT5yaWdodCk7CgogCiAgcmV0dXJuIDA7Cn0=