fork(9) download
  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4. struct Node
  5. {
  6. char key;
  7. Node *left, *right;
  8. };
  9. void preorder(struct Node *root1,struct Node* root2,int lvl){
  10. if (root1 == NULL||root2==NULL) return;
  11. if(lvl%2==0){
  12. int temp=root1->key;
  13. root1->key=root2->key;
  14. root2->key=temp;
  15. }
  16. preorder(root1->left,root2->right,lvl+1);
  17. preorder(root1->right,root2->left,lvl+1);
  18. }
  19.  
  20. void printInorder(struct Node *root)
  21. {
  22. if (root == NULL) return;
  23. printInorder(root->left);
  24. cout << root->key << " ";
  25. printInorder(root->right);
  26. }
  27. // A utility function to create a new node
  28. Node *newNode(int key)
  29. {
  30. Node *temp = new Node;
  31. temp->left = temp->right = NULL;
  32. temp->key = key;
  33. return temp;
  34. }
  35.  
  36. // Driver program to test above functions
  37. int main()
  38. {
  39. struct Node *root = newNode('a');
  40. root->left = newNode('b');
  41. root->right = newNode('c');
  42. root->left->left = newNode('d');
  43. root->left->right = newNode('e');
  44. root->right->left = newNode('f');
  45. root->right->right = newNode('g');
  46. root->left->left->left = newNode('h');
  47. root->left->left->right = newNode('i');
  48. root->left->right->left = newNode('j');
  49. root->left->right->right = newNode('k');
  50. root->right->left->left = newNode('l');
  51. root->right->left->right = newNode('m');
  52. root->right->right->left = newNode('n');
  53. root->right->right->right = newNode('o');
  54.  
  55. cout << "Inorder Traversal of given tree\n";
  56. printInorder(root);
  57.  
  58. preorder(root->left,root->right,0);
  59. cout << "\n\nInorder Traversal of modified tree\n";
  60. printInorder(root);
  61. return 0;
  62. }
Success #stdin #stdout 0s 3272KB
stdin
Standard input is empty
stdout
Inorder Traversal of given tree
h d i b j e k a l f m c n g o 

Inorder Traversal of modified tree
o d n c m e l a k f j b i g h