写反转二叉树中遇到的一个小Bug
2015-10-14 14:44
260 查看
TreeNode* invertTree(TreeNode* root) { auto ret=invert(root); return ret; } TreeNode* invert(TreeNode* r) { if(r==NULL) return NULL; swap(invert(r->left),invert(r->right)); return r; } void swap(TreeNode* &l,TreeNode* &r) { auto t=l; l=r; r=t; }
恩很好,这段代码有一处傻逼错误,你能一眼看出来么?(反转二叉树提交了5次)
对,我引用了一个临时返回值..
返回的是一个临时的值,然而swap接口却是引用,真正要用的时候,已经没有了。
返回值是临时的!
void swap(TreeNode* &l,TreeNode* &r)
swap(invert(r->left),invert(r->right));
段代码写得一点也不好….
这里贴一段更好的代码
TreeNode* invertTree(TreeNode* root) { if (root==NULL) return NULL; auto left=root->left; auto right=root->right; root->left=invertTree(right); root->right=invertTree(left); return root; }
相关文章推荐
- OSI模型之网络层概述
- Elasticsearch 学习笔记
- map字符串转json字符串,转map对象
- jq实现左滑显示删除按钮,点击删除实现删除数据
- mysql修改表结构方法实例详解
- 结合Scikit-learn介绍几种常用的特征选择方法
- Android动画之二:View Animation
- Sql Server 死锁的解除方法
- 第七周项目3负数把正数赶出队列
- 技术人员进阶总结
- C++STL学习(2)容器deque
- Python编程中的for循环语句学习教程
- URAL 1156 Two Rounds (DFS二分染色 + DFS枚举 + 剪枝)
- Java代码改变AndroidManifest.xml的包名和icon值
- ubuntu 12.10上安装tftpd-hpa
- CocoaPods安装和使用教程
- js 总结累计大全
- 2014taichuan D题
- Android中解析XML
- LAMMP架构的企业级应用