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;
    }
  • 相关阅读:
    mysql 快速生成百万条测试数据
    DEV SIT UAT
    云计算的三层SPI模型
    go的下载
    redis主从 哨兵
    Mybatis 插入操作时获取主键 (Oracle 触发器与SEQ)
    oracle创建表空间
    mycat源码分析
    js判断是否是数字通用写法
    spring aop获取目标对象的方法对象(包括方法上的注解)
  • 原文地址:https://www.cnblogs.com/songwanzi/p/3505126.html
Copyright © 2011-2022 走看看