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

 二叉树节点定义如下:

 strcut BinaryTreeNode
{
int val;
strcut BinaryTreeNode* m_pleft;
strcut BinaryTreeNode* m_pright;
}

本题可以参考http://www.cnblogs.com/vpoet/p/4660486.html(Leecode-Invert Binary Tree)一文

实质是递归交换二叉树的左右节点。

比如

        /  \

      / \   / \
           

1.首先查看根节点与左右子节点是否为空,若为空则无需交换

2.先交换根节点的左右子节点。

3.再交换交换后的左子树的左右节点和右子树的左右节点

4.知道到达叶子节点,交换结束。

递归函数如下:

 void MirrorRecursively(BinaryTreeNode *pNode)
{
if(pNode==NULL)
return NULL; if(pNode->m_pleft==NULL&&pNode->m_pright==NULL)
return NULL; struct BinaryTreeNode *TempNode;
TempNode=pNode->m_pleft;
pNode->m_pleft=pNode->m_pright;
pNode->m_pright=TempNode; if(pNode->m_pleft)
{
MirrorRecursively(pNode->m_pleft);
} if(pNode->m_pright)
{
MirrorRecursively(pNode->m_pright);
}
}

说明:注意结束条件,到达叶子结点结束

 if(pNode->m_pleft==NULL&&pNode->m_pright==NULL)
return NULL;

 

最新文章

  1. xhtml 和 html 的区别
  2. HTTP Error 503. The service is unavailable
  3. matlab批量合并txt文件
  4. html转jsp乱码问题
  5. Ubuntu检测磁盘是否挂载
  6. Oracle11g安装出现em.ear
  7. MFC中TRACE
  8. linux tomcat自启动设置
  9. 依赖注入(IOC)二
  10. EditText光标居上
  11. BZOJ2318: Spoj4060 game with probability Problem
  12. asp.net mvc 接入阿里大于 短信验证码发送
  13. Js相关用法个人总结
  14. CLR-基元类型以及溢出检查
  15. FJUT-这还是一道数论题
  16. PTA寒假二
  17. GPT转MBR怎么转?
  18. Node稳定性的研究心得
  19. django之创建第8个项目-数据库配置及同步研究
  20. nwjs 实现的 分块上传

热门文章

  1. 解决IE6 IE7 JSON.stringify JSON 未定义问题
  2. Java宝典(三)
  3. ofbiz安装优化
  4. 程序员求职之道(《程序员面试笔试宝典》)之程序设计基础(static的使用)?
  5. poj 3320 Jessica's Reading Problem(尺取法)
  6. Memcached完全解剖–1. memcached基金会
  7. Android Eclipse Errors
  8. FLASH图片上传功能—从百度编辑器UEditor里面提取出来
  9. 提示框的优化之自定义Toast组件之(三)Toast组件优化
  10. JS中prototype属性-JS原型模式