226. Invert Binary Tree
2016-03-23 12:55
323 查看
Invert a binary tree.
to
题意:把一个树对称翻转。
思路:其实是把一棵树的左右子树调换。递归实现即可。参照了101. Symmetric Tree 代码如下:
思路2:不参照,直接调换左右子树,递归如下实现。
4 / \ 2 7 / \ / \ 1 3 6 9
to
4 / \ 7 2 / \ / \ 9 6 3 1
题意:把一个树对称翻转。
思路:其实是把一棵树的左右子树调换。递归实现即可。参照了101. Symmetric Tree 代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* invertTree(TreeNode* root) { if (root) swap(root->left, root->right,root); return root; } void swap(TreeNode* p, TreeNode* q, TreeNode* f){ if (p == NULL && q == NULL){ return; } else if (p == NULL && q != NULL){ f->left = q; f->right = NULL; p = q; swap(p->left, p->right, p); return; } else if (p != NULL && q == NULL){ f->right = p; f->left = NULL; q = p; swap(q->left, q->right, q); return; } else{ f->left = q; f->right = p; swap(p->left, p->right, p); swap(q->left, q->right, q); } } };
思路2:不参照,直接调换左右子树,递归如下实现。
class Solution { public: TreeNode* invertTree(TreeNode* root) { if (root){ TreeNode* t = root->left; root->left = root->right; root->right = t; invertTree(root->left); invertTree(root->right); } return root; } };
相关文章推荐
- jquery基础篇(二)— —属性与样式
- [转]源代码的管理和发布:以SVN为例
- javascript + jquery函数大全
- 代码复审
- Debian/Linux下Django + PostgreSQL环境搭建
- 14. Longest Common Prefix
- 四则运算(修改版)
- HDOJ 2027 统计元音
- springframe(七)AOP之动态代理
- RabbitMQ监控(1)——RabbitMQ简介
- 四则运算(修改版)
- 【软件测试】APP停止运行的bug分析
- springframework(六)AOP之静态代理
- 019_Map Task数目的确定和Reduce Task数目的指定
- 024_MapReduce中的基类Mapper和基类Reducer
- 025_MapReduce样例Hadoop TopKey算法
- 027_编写MapReduce的模板类Mapper、Reducer和Driver
- 028_MapReduce中的计数器Counter的使用
- 虚拟机(VMWare)NAT 模式,配置静态IP上网的问题
- [置顶]01_Hadoop学习笔记内容说明