数据结构-----二叉树的镜像实现

一、二叉树镜像的抽象描述:

        关于二叉树中的镜像,用一个生活中的例子来说,就好比物体与其在镜子中的成像。

二、二叉树镜像的思路分析

        二叉树的镜像就好比将二叉树的各个结点的左右子树进行交换,如下图所示:

由于二叉树是以递归的方式创建而得到,故此我们也可以以递归的方式进行二叉树镜像的建立。二叉树镜像的建立其实与二叉树的遍历大同小异,只是将其结点访问改写为对结点左右子树的交换。

三、二叉树镜像的代码实现

//二叉树的镜像
void swap(TreeNode** lchild,TreeNode** rchild){
	TreeNode* tmp = *lchild;
			*lchild = *rchild;
			*rchild = tmp;
}
void TreeMirror(TreeNode* root){
	if(root == NULL){
		//空树
		return;
	}
	swap(&(root->lchild),&(root->rchild));
	TreeMirror(root->lchild);
	TreeMirror(root->rchild);
}

四、代码检测

void textTreeMirror(){
	printf("\n*************%s********************\n",__FUNCTION__);
	TreeNode* A = CreatTreeNode('a');
	TreeNode* B = CreatTreeNode('b');
	TreeNode* C = CreatTreeNode('c');
	TreeNode* D = CreatTreeNode('d');
	A->lchild = B;
	A->rchild = C;
	B->lchild = D;
	TreeMirror(A);
	PostOrderByLoop(A);
}

结果显示:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值