剑指offer-二叉搜索树与双向链表
来源:互联网 发布:北伊利诺伊大学 知乎 编辑:程序博客网 时间:2024/06/06 10:59
问题
题目:[二叉搜索树与双向链表]
思路
这个题目做的还行,我就是按照我的想法来的。
树的题目多半可以分治,所以我先试了试。
觉得可以,原问题可以转化为把左子树转化为一个有序链表,然后把右子树转化为一个有序链表。这样根节点再分别和她们链接即可。具体做的时候,应该是吸取了上次做某一道题目时的经验,做的时候从底层开始,逐步向上细化代码。因为大的框架很容易想,关键就是边界条件,以及递归里面的处理,这些操作可以在底层的时候想明白。
注意,返回值只是在左子树为空的时候需要特别处理。
代码
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: TreeNode* Convert(TreeNode* pRootOfTree) { TreeNode*& root = pRootOfTree; if( !root ) return NULL; else{ TreeNode* ret = NULL; TreeNode* l = Convert( root->left ); TreeNode* r = Convert( root->right ); if( l ){ TreeNode* p = l; while(p->right) p = p->right; p->right = root; root->left = p; ret = l; // 修改返回值 }else ret = root; // 修改返回值 if( r ){ root->right = r; r->left = root; } return ret; } }};
阅读全文
0 0
- 剑指Offer二叉搜索树与双向链表
- 【剑指offer:】Q27:二叉搜索树与双向链表
- 剑指offer--二叉搜索树与双向链表
- 剑指offer 27 - 二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 《剑指offer》二叉搜索树与双向链表
- 【剑指Offer】二叉搜索树与双向链表
- 剑指offer—二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- 剑指offer-二叉搜索树与双向链表
- 剑指Offer--027-二叉搜索树与双向链表
- 剑指offer:二叉搜索树与双向链表
- [剑指offer]二叉搜索树与双向链表
- 《剑指offer》-二叉搜索树与双向链表
- 剑指offer-27二叉搜索树与双向链表
- 剑指offer题解 二叉搜索树与双向链表
- 剑指offer|二叉搜索树与双向链表
- 【剑指offer】二叉搜索树与双向链表
- impala 最大的坑(说impala慢,是因为你不知道怎么使用它)
- PAT乙级1031. 查验身份证(15)
- html5中如何使用正则表达式进行表单验证
- 如何在word中插入比较好看的代码
- Java JDK环境变量配置,Tomcat环境变量配置
- 剑指offer-二叉搜索树与双向链表
- 图像处理之霍夫变换(直线检测算法)
- JavaScript中Date对象与格式化时间输出
- 输入流与输出流的区别
- 按小到大顺序输出一个正整数的所有质数因子
- Ruby学习
- @Cacheable在同一个类中方法调用不起作用
- 多路转接之epoll服务器
- Test 2 for NOIP- Result for Day2