博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法设计--树的镜像
阅读量:6772 次
发布时间:2019-06-26

本文共 960 字,大约阅读时间需要 3 分钟。

题目

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

方法分析

树的镜像,对于很多人来说这个东西可能很陌生,不知道这是个什么东西,未必一下子能够想出来。所以这里在设计算法的时候要利用画图的方式举一些简单的例子去了解题目的规则。

 

算法设计

(1)使用先序的方式遍历这棵二叉树,如果遍历到的结点有子节点,就交换该结点的两个子节点。

(2)直到遍历完二叉树的所有的非叶子结点,就得到了二叉树的镜像。

 

测试用例

(1)空树(2)只有一个根结点的树(3)单边的二叉树(4)普通的二叉树

 

代码实现

(1)递归方式:

void Mirror(TreeNode *pRoot) {	if(NULL == pRoot)		return;		swap(pRoot->left, pRoot->right);		Mirror(pRoot->left);	Mirror(pRoot->right);}void swap(TreeNode* &param1, TreeNode* &param2){	TreeNode *ptmp = param1;	param1 = param2;	param2 = ptmp;}

  

(2)循环使用栈方式:

void Mirror(TreeNode *pRoot) {	stack
s; if(pRoot == NULL) return; TreeNode *ptop = NULL; TreeNode *ptmp = NULL; s.push(pRoot); while(!s.empty()) { ptop = s.top(); s.pop(); ptmp = ptop->left; ptop->left = ptop->right; ptop->right = ptmp; if(ptop->right) s.push(ptop->right); if(ptop->left) s.push(ptop->left); }}

  

代码Debug

利用首页的建立二叉树,打印二叉树的代码测试这个函数,把上面的测试用例跑一遍。

转载于:https://www.cnblogs.com/stemon/p/4641369.html

你可能感兴趣的文章
关于测试人员的职业发展
查看>>
Gnu C API使用指南
查看>>
来来,一起设计一个简单的活动发布系统
查看>>
VisualStudio基本使用(2)-使用VS2013来编译C语言程序
查看>>
Nexus6p:正在下载系统更新,没有进度
查看>>
【JSP手记】--jsp里面session.getAttribute("×××")在java中的表示
查看>>
PhoneGap1.3基于Android平台的搭建
查看>>
终端下使用Emacs的一些Tips
查看>>
BZOJ2082 : [Poi2010]Divine divisor
查看>>
『TensorFlow』第二弹_线性拟合&神经网络拟合_恰是故人归
查看>>
sublime 插件配置与说明
查看>>
站点开发和企业级开发有什么差别?
查看>>
JSON-RPC for python ¶
查看>>
Oracle 数据库11g新特性之高效 PL/SQL 编码
查看>>
Failed to initialize monitor Thread: Unable to establish loopback connection解决方法
查看>>
面试官自述:面向高级开发人员的iOS面试问题
查看>>
全球前四,Gartner点评阿里云云存储国际竞争力增长迅猛
查看>>
“你敢扫,我敢赔”的支付宝遇到瓶颈了,有钱竟然没处花
查看>>
马云走进俄罗斯最牛大学,校长表白:要与阿里共建科学研究所!
查看>>
无现金社会来临,未来你的孩子只能在淘宝上看到这些东西
查看>>