/*
第 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;
}