zoukankan      html  css  js  c++  java
  • Convert BST to double linked lists in order

    #include <iostream>
    #include <cstdlib>
    struct BSTNode{
      int v;
      struct BSTNode *left,*right;
    };
    
    struct BSTNode *root=NULL,*head=NULL,*tail=NULL;
    
    struct BSTNode* createNode(int data){
        struct BSTNode *newNode;
        newNode=(struct BSTNode*)malloc(sizeof(struct BSTNode));
        newNode->v=data;
        newNode->left=NULL;
        newNode->right=NULL;
        return newNode;
    }
    
    void insertion(struct BSTNode **node,int data){
        if(*node==NULL){
            *node=createNode(data);
        }else if(data<(*node)->v){
                insertion(&(*node)->left,data);
            }else if(data>(*node)->v){
                insertion(&(*node)->right,data);
            }
    }
    void traverse(struct BSTNode *node){
        if(node!=NULL){
            traverse(node->left);
            std::cout<<node->v;
            traverse(node->right);
        }
        return;
    }
    
    void helper(struct BSTNode **h, struct BSTNode **t, struct BSTNode *root){
        BSTNode *lt=NULL,*rh=NULL;
        if(root==NULL){
            *h=NULL;*t=NULL;
            return;
        }
        helper(h,&lt,root->left);
        helper(&rh,t,root->right);
        if(lt!=NULL){
            lt->right=root;
            root->left=lt;
        }else{
            *h=root;
        }
        if(rh!=NULL){
            root->right=rh;
            rh->left=root;
        }else{
            *t=root;
        }
    }
    
    int main(){
        int data,ch;
        insertion(&root,10);
        insertion(&root,16);
        insertion(&root,8);
        insertion(&root,20);
        insertion(&root,21);
        traverse(root);
        helper(&head,&tail,root);
        std::cout<<head->right->v;
        std::cin>>data;
    }
  • 相关阅读:
    「考试」省选6
    「考试」省选5
    「考试」省选4
    「笔记」拉格朗日插值
    数学专测
    「笔记」$exlucas$
    「总结」$dp1$
    「总结」达哥数学专项
    「总结」筛法2
    「总结」莫反2
  • 原文地址:https://www.cnblogs.com/songwanzi/p/3505126.html
Copyright © 2011-2022 走看看