剑指offer 27二叉搜索树与双向链表
Posted summerkiki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 27二叉搜索树与双向链表相关的知识,希望对你有一定的参考价值。
class Solution { public: void ConvertNode(TreeNode* pRootOfTree,TreeNode** pre) { if(pRootOfTree) { TreeNode* cur=pRootOfTree; if(cur->left) ConvertNode(cur->left,pre); cur->left=*pre; if(*pre) (*pre)->right=cur; *pre=cur; if(cur->right) ConvertNode(cur->right,pre); } } TreeNode* Convert(TreeNode* pRootOfTree) { if(!pRootOfTree) return NULL; TreeNode* pre=NULL; ConvertNode(pRootOfTree,&pre); while(pre->left) { pre=pre->left; } return pre; } };
二叉搜索树的前序遍历就是从小到大输出,因此这里是在中序遍历的基础上进行链表操作。left指针指向前一个数,right指针指向后一个数,在cur结点,设置其left指针,并设置pre结点的right指针。这样递归地把树改为链表。
以上是关于剑指offer 27二叉搜索树与双向链表的主要内容,如果未能解决你的问题,请参考以下文章