#include <iostream>

using namespace std;

struct TNode {
  char m_cName;
  TNode *m_pLeft;
  TNode *m_pRight;
};

void printTree(TNode *pNode) {
  if(pNode==NULL)
    return;

  cout << pNode->m_cName << " ";
  printTree(pNode->m_pLeft);
  printTree(pNode->m_pRight);
}

void rotate_children(TNode *pNode) {

  if(pNode==NULL)
    return;

  rotate_children(pNode->m_pLeft);
  rotate_children(pNode->m_pRight);

  TNode *tmp = pNode->m_pLeft;
  pNode->m_pLeft = pNode->m_pRight;
  pNode->m_pRight = tmp;
}

int main(int argc, char **argv) {

  TNode *tree = new TNode;
  tree->m_cName = 'A';

  TNode *node1 = new TNode;
  node1->m_cName = 'B';
  tree->m_pLeft = node1;

  TNode *node2 = new TNode;
  node2->m_cName = 'C';
  tree->m_pRight = node2;

  TNode *node3 = new TNode;
  node3->m_cName = 'D';
  node2->m_pLeft = node3;

  TNode *node4  = new TNode;
  node4->m_cName = 'E';
  node2->m_pRight = node4;

  TNode *node5 = new TNode;
  node5->m_cName = 'F';
  node3->m_pLeft = node5;

  printTree(tree);
  cout << endl;

  rotate_children(tree);

  printTree(tree);
  cout << endl;

  return 0;
}
