剑指offer-二叉搜索树与双向链表
2017-07-12 16:52
295 查看
问题
题目:[二叉搜索树与双向链表]思路
这个题目做的还行,我就是按照我的想法来的。树的题目多半可以分治,所以我先试了试。
觉得可以,原问题可以转化为把左子树转化为一个有序链表,然后把右子树转化为一个有序链表。这样根节点再分别和她们链接即可。
具体做的时候,应该是吸取了上次做某一道题目时的经验,做的时候从底层开始,逐步向上细化代码。因为大的框架很容易想,关键就是边界条件,以及递归里面的处理,这些操作可以在底层的时候想明白。
注意,返回值只是在左子树为空的时候需要特别处理。
代码
/* 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; } } };
相关文章推荐
- 剑指Offer——(26)二叉搜索树与双向链表
- 剑指Offer_面试题27_二叉搜索树与双向链表
- (C++)剑指offer-26:二叉搜索树与双向链表(分解让复杂问题简单)
- 剑指Offer面试题27(Java版):二叉搜索树与双向链表
- 剑指offer---二叉搜索树与双向链表
- 剑指Offer面试题-二叉搜索树与双向链表
- 剑指offer 27. 二叉搜索树与双向链表
- 剑指offer_二叉树---二叉搜索树与双向链表
- 剑指offer—二叉搜索树与双向链表
- 剑指Offer面试题26复杂链表的复制,面试题27二叉搜索树和双向链表(递归)
- 【剑指offer-Java版】27二叉搜索树与双向链表
- 剑指offer 27 二叉搜索树与双向链表
- 【剑指offer】之二叉搜索树转双向链表
- 剑指offer-27二叉搜索树与双向链表
- 【剑指offer】26二叉搜索树与双向链表
- 剑指offer 二叉搜索树以及双向链表
- 剑指offer面试题27-二叉搜索树转双向链表
- 剑指offer之面试题27二叉搜索树与双向链表
- 剑指offer 二叉搜索树和双向链表
- 【剑指offer】二叉搜索树转双向链表