16.二叉树的镜像(第三次做还是要看思路)
来源:互联网 发布:淘宝网站域名 编辑:程序博客网 时间:2024/05/16 14:53
二叉树的镜像
- 参与人数:4644时间限制:1秒空间限制:32768K
- 算法知识视频讲解
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
这道题难度一般,主要是尾递归的掌握以及递归退出条件的判断
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: void Mirror(TreeNode *pRoot) {if ( pRoot == NULL ) return ; if ( pRoot->left == NULL && pRoot->right == NULL ) return ; TreeNode* tmp = pRoot->left ; pRoot->left = pRoot->right ; pRoot->right = tmp ; if ( pRoot->left != NULL ) { Mirror( pRoot->left ) ; } if ( pRoot->right != NULL ) { Mirror( pRoot->right ) ; } }};
第二次做:
先搭框架,把交换节点的代码写出来
class Solution {public: void Mirror(TreeNode *pRoot) { TreeNode* tmp = pRoot->left ; pRoot->left = pRoot->right ; pRoot->right = tmp ; }};
再写尾递归
class Solution {public: void Mirror(TreeNode *pRoot) { TreeNode* tmp = pRoot->left ; pRoot->left = pRoot->right ; pRoot->right = tmp ; Mirror( pRoot->left ) ; Mirror( pRoot->right ) ; }};
最后别忘了递归退出条件:
class Solution {public: void Mirror(TreeNode *pRoot) {if ( pRoot == NULL ) return ; TreeNode* tmp = pRoot->left ; pRoot->left = pRoot->right ; pRoot->right = tmp ; Mirror( pRoot->left ) ; Mirror( pRoot->right ) ; }};
第三次做:
/*struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}};*/class Solution {public: void Mirror(TreeNode *pRoot) {if ( pRoot == NULL ) return ; TreeNode* tmp = pRoot->left ; pRoot->left = pRoot->right ; pRoot->right = tmp ; Mirror( pRoot->left ) ; Mirror( pRoot->right ) ; }};
0 0
- 16.二叉树的镜像(第三次做还是要看思路)
- 21.二叉搜索树的后序遍历序列(做第二遍时感觉仍有难度,第三次做时还是要看思路)
- 23.二叉树中和为某一值的路径(做第二遍时感觉仍有难度,第三次做还是要看一下思路)
- 4.重建二叉树(做第二遍时感觉仍有有难度,第三次做还是要看一下思路才行)
- 22.复杂链表的复制(做第二遍时感觉仍有难度,第三次做还是要看思路)
- 19.栈的压入、弹出序列(做第二遍时感觉仍有难度,做第三次时依然需要看思路,但是已经觉得简单了)
- 《剑指offer》刷题笔记(面试思路):二叉树的镜像
- 剑指offer 19题 【面试思路】二叉树的镜像
- 剑指offer:(19)面试官谈面试思路:二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- 二叉树的镜像
- php中curl的用法
- 自动装箱的陷进
- java并发编程(12)--阻塞队列
- 程序员跳槽的最佳时机选择
- hive笔记-----表
- 16.二叉树的镜像(第三次做还是要看思路)
- JSP网页之间get传参乱码
- TimesTen的日志文件ttmesg.log
- html的笔记
- 比较美观的ListView下拉刷新上拉加载
- nvm node 版本管理器的安装
- 1006 ProblemF
- Java学习笔记之输入输出流(二) 缓冲流、随机流、数组流、数据流、对象流
- 在移动硬盘里装多个linux系统