/*
第 15  题:
题目:输入一颗二元查找树,将该树转换为它的镜像,
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
例如输入:
      8
      /  \
    6   10
   / \  / \
   5  7 9  11
输出:
      8
      /  \
    10  6
    / \ / \
   11 97  5
两种方法:
1.递归
2.队列BFS  
*/
//递归转换当前结点的左右子树  
void convert(BTreeNode *root)
{
   BTreeNode *temp=NULL;
   if(root!=NULL)
   {
      temp=root->left;
      root->left=root->right;
      root->right=temp;
      
      convert(root->left);
      convert(root->right);
   }
} 
//循环:利用BFS层次遍历每个结点 交换其子节点 
BTreeNode *convert2(BTreeNode *root)
{
   BTreeNode *temp,*start;
   queue<BTreeNode> q;
   q.push(root);
   
   while(q.empty())
   {
      start=q.front();
      q.pop();
      
      if(start->left!=NULL)
         q.push(start->left);
      
      if(start->rightt!=NULL)
         q.push(start->right);
      
      temp=start->left;
      start->left=start->right;
      start->right=temp;   
   }
   return root;
}