剑指offer-面试题.二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。
二叉树节点定义如下:
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-面试题.二叉树的镜像的更多相关文章
- 【剑指offer】27. 二叉树的镜像
剑指 Offer 27. 二叉树的镜像 知识点:二叉树:递归:栈 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 示例 输入:root = [4,2,7,1,3,6,9] 输出:[4, ...
- 剑指offer 19:二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 解题思路 这一问题明显,在进行递归遍历节点时,将根节点的左右子树进行交换,因此完成树的遍历即可. C++实现代码 /* ...
- 【剑指offer】Q19:二叉树的镜像
def MirroRecursively(root): # root is None or just one node, return root if None == root or None == ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解
剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...
- 【剑指Offer面试题】 九度OJ1368:二叉树中和为某一值的路径
题目链接地址: http://ac.jobdu.com/problem.php? pid=1368 题目1368:二叉树中和为某一值的路径 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2252 ...
- 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历
二叉树的先序,中序,后序如何遍历,不在此多说了.直接看题目描述吧(题目摘自九度oj剑指offer面试题6): 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结 ...
- 【剑指Offer面试题】 九度OJ1385:重建二叉树
题目链接地址: pid=1385">http://ac.jobdu.com/problem.php?pid=1385 题目1385:重建二叉树 时间限制:1 秒内存限制:32 兆特殊判 ...
- 剑指Offer——笔试题+知识点总结
剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...
- C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
剑指offer 面试题39:判断平衡二叉树 提交网址: http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...
随机推荐
- Tomcat部署项目通过—IP地址:端口访问
如题所示,实现效果图如下: 设置如下: (1)修改${tomcat}/config/sever.xml文件虚拟内容目录: <Engine name="Catalina" de ...
- Poj2761-Feed the dogs(伸展树求名次)
Description Wind loves pretty dogs very much, and she has n pet dogs. So Jiajia has to feed the dogs ...
- poj1363
堆栈的模拟,给定序列,1,2,3,4,...判断堆栈出栈顺序是否合法 5 //5个数入栈1 2 3 4 5 //出栈顺序5 4 1 2 3 //出栈顺序0 //5个数的结束6 //6个数的入栈6 5 ...
- XHTML使用规范
XHTML元素语法: 1.XHTML元素必须正确嵌套 2.XHTML元素必须始终闭合 3.XHTML元素必须小写 4.XHTML文档必须有一个更元素 XHTML属性语法规则: 1 ...
- hdu 5676 ztr loves lucky numbers(dfs+离线)
Problem Description ztr loves lucky numbers. Everybody knows that positive integers are lucky if the ...
- 动态规划之最长公共子序列LCS(Longest Common Subsequence)
一.问题描述 由于最长公共子序列LCS是一个比较经典的问题,主要是采用动态规划(DP)算法去实现,理论方面的讲述也非常详尽,本文重点是程序的实现部分,所以理论方面的解释主要看这篇博客:http://b ...
- java-程序执行原理
java应用可以打包成jar 格式,jar格式其实只是一种很普通的压缩格式,与zip格式一样,只不过是它会在压缩文件的目录结构中增加一个META-INF/ MANIFEST.MF 的元文件. 我们知道 ...
- 关于vi不正常退出产生的swp文件
关于vi不正常退出产生的swp文件 非正常关闭vi编辑器时会生成一个.swp文件 关于swp文件 使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么 ...
- 使用INTERVAL YEAR TO MONTH类型
Oracle Database 9i数据库引入了一种新特性,可以用来存储时间间隔.时间间隔的例子包括: ● 1年零3个月 ● 25个月 ● -3天5小时16分 ● 1天7小时 ● -56小时 注意: ...
- linq和lamda表达式中添加时间判断时解决方案
在工作中遇到个问题,在使用lamda查询数据的时候,需要添加一个时间判断, DateTime.AddDays(3) > e.ExpirationDate 例如:list = Context.Vo ...