面试题36. 二叉搜索树与双向链表

题目:

 

 

 

 

解答:

 1 // 中序遍历即可。只需要记录一个pre指针即可。
 2 
 3  
 4 class Solution {
 5 public:
 6     TreeNode* Convert(TreeNode* pRootOfTree)
 7     {
 8         if(pRootOfTree == nullptr) 
 9         {
10             return nullptr;
11         }
12         
13         TreeNode* pre = nullptr;
14          
15         convertHelper(pRootOfTree, pre);
16          
17         TreeNode* res = pRootOfTree;
18         while(res ->left)
19         {
20             res = res ->left;
21         }
22         return res;
23     }
24      
25     void convertHelper(TreeNode* cur, TreeNode*& pre)
26     {
27         if(cur == nullptr) 
28         {
29             return;
30         }
31          
32         convertHelper(cur ->left, pre);
33          
34         cur ->left = pre;
35         if(pre) 
36         {
37             pre ->right = cur;
38         }
39         pre = cur;
40          
41         convertHelper(cur ->right, pre);    
42     }
43 };

 

posted @ 2020-05-09 16:05  梦醒潇湘  阅读(136)  评论(0)    收藏  举报