标签:
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指针。这样递归地把树改为链表。
标签:
原文地址:http://www.cnblogs.com/summerkiki/p/5529862.html