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

 二叉树节点定义如下:

 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;

 

剑指offer-面试题.二叉树的镜像的更多相关文章

  1. 【剑指offer】27. 二叉树的镜像

    剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...

  2. 剑指offer 19:二叉树的镜像

    题目描述 操作给定的二叉树,将其变换为源二叉树的镜像.   输入描述:   解题思路 这一问题明显,在进行递归遍历节点时,将根节点的左右子树进行交换,因此完成树的遍历即可.   C++实现代码 /* ...

  3. 【剑指offer】Q19:二叉树的镜像

    def MirroRecursively(root): # root is None or just one node, return root if None == root or None == ...

  4. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

  5. C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解

    剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...

  6. 【剑指Offer面试题】 九度OJ1368:二叉树中和为某一值的路径

    题目链接地址: http://ac.jobdu.com/problem.php? pid=1368 题目1368:二叉树中和为某一值的路径 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2252 ...

  7. 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历

    二叉树的先序,中序,后序如何遍历,不在此多说了.直接看题目描述吧(题目摘自九度oj剑指offer面试题6): 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结 ...

  8. 【剑指Offer面试题】 九度OJ1385:重建二叉树

    题目链接地址: pid=1385">http://ac.jobdu.com/problem.php?pid=1385 题目1385:重建二叉树 时间限制:1 秒内存限制:32 兆特殊判 ...

  9. 剑指Offer——笔试题+知识点总结

    剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...

  10. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

随机推荐

  1. checkbox全选和反选

     $("#CheckBox").click(function () {                 if (this.checked) {                    ...

  2. Unity调试中心

    渐渐在公司接SDK3个月了,一直没有参加项目的游戏功能编写几乎快忘记Unity了, 看到那些前辈编写游戏到发布游戏,总结了下 每一个游戏应该有一个调试中心, 方便策划 测试更好的了解游戏和测试游戏. ...

  3. Spark1.0.0 分布式环境搭建

    软件版本号例如以下: Hostname IP Hadoop版本号 Hadoop 功能 系统 master 192.168.119.128 1.1.2 namenode jdk1.6+hadoop+sc ...

  4. HDU4907小技巧

    原题http://acm.hdu.edu.cn/showproblem.php?pid=4907 Task schedule Time Limit: 2000/1000 MS (Java/Others ...

  5. 使用Xshell连接Ubuntu

    使用Xshell连接Ubuntu Xshell是一个安全终端模拟软件,可以进行远程登录.我使用XShell的主要目的是在Windows环境下登录Linux终端进行编码,非常方便.本文简单介绍下它的使用 ...

  6. Oracle INTERVAL DAY TO SECOND数据类型

    INTERVAL DAY TO SECOND数据类型 Oracle语法: INTERVAL '{ integer | integer time_expr | time_expr }' { { DAY ...

  7. javascript 获取event对象

    //转载处 http://www.cnblogs.com/funlake/archive/2009/04/07/1431238.html 非常详细 先从一个简单的例子说起,一个简单的button控件如 ...

  8. ajax局部刷新分页

    //请求数据加载绑定页面 function DindAjax(pageIndex) {//获取参数 var colors = $("#colorsVal").val(); $.aj ...

  9. Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子

    这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者 ...

  10. 注册界面的优化之ActionBar组件的应用之(二)ActionBar组件的事件处理

    开发步骤: 重写父类中的一个方法onOptionsItemSelected实现ActionBar中的选项单击事件 //Register_Activity.java public class Regis ...