现在的位置: 首页 > 综合 > 正文

15 输入一颗二元查找树,将该树转换为它的镜像

2018年05月02日 ⁄ 综合 ⁄ 共 623字 ⁄ 字号 评论关闭
/*
第 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;
}

抱歉!评论已关闭.