首页 > 其他 > 详细

【链表】二叉搜索树与双向链表

时间:2020-05-06 19:50:23      阅读:50      评论:0      收藏:0      [点我收藏+]

题目:

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

 

解答:

 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 };

 

 

【链表】二叉搜索树与双向链表

原文:https://www.cnblogs.com/ocpc/p/12837470.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!