BST转换成有序链表

把二元查找树转变成排序的双向链表(树)
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。

 1 struct BSTreeNode{
 2     int val;
 3     BSTreeNode* left;
 4     BSTreeNode* right;
 5     BSTreeNode(int x) : val(x),left(nullptr),right(nullptr){}
 6 };
 7 
 8 void helper(BSTreeNode* root,BSTreeNode*& head, BSTreeNode*& tail){
 9     if(!root) return;
10     helper(root->left,head,tail);
11     root->left = tail;
12     if(tail){
13         tail->right = root;
14     }else{
15         head = root;
16     }
17     tail = root;
18     helper(root->right,head,tail);
19 }
20 
21 BSTreeNode* ConvertBSTree2List(BSTreeNode* root){
22     BSTreeNode* head = nullptr;//list head
23     BSTreeNode* tail = nullptr;//list tail
24     helper(root,head,tail);
25     return head;
26 }
27 
28 int main(){
29     BSTreeNode* root = new BSTreeNode(10);
30     root->left = new BSTreeNode(6);
31     root->right = new BSTreeNode(14);
32     root->left->right = new BSTreeNode(8);
33     BSTreeNode* head;
34     head = ConvertBSTree2List(root);
35     return 0;
36 }

 

转载于:https://www.cnblogs.com/wxquare/p/4946006.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值