zoukankan      html  css  js  c++  java
  • 二叉搜索树的各种问题

    1.插入

    BinTree Insert( BinTree BST, ElementType X ){
        if(!BST){
            BST=(BinTree )malloc(sizeof(struct TNode));
            BST->Data =X;
            BST->Left =BST->Right =NULL;
        }
        else{
            if(X<BST->Data )
                BST->Left =Insert(BST->Left ,X);
            else if(X>BST->Data )
                BST->Right =Insert(BST->Right ,X);
        }
        return BST;
    } 
    View Code

    2.查找最大值

    Position FindMax( BinTree BST ){
        if(BST)
            while(BST->Right )    BST=BST->Right ;
        return BST;
    }
    View Code

    3.查找最小值

    Position FindMin( BinTree BST ){
        if(!BST) return NULL;
        else if(!BST->Left ) return BST;
        else return FindMin(BST->Left);
    }
    View Code

    4.查找

    Position Find( BinTree BST, ElementType X ){
        if(!BST) return NULL;
        if(X>BST->Data)  return Find(BST->Right ,X);
        else if(X<BST->Data )    return Find(BST->Left ,X);
        else return BST;
    }
    View Code

    5.删除

    BinTree Delete( BinTree BST, ElementType X ){
        Position Tmp;
        if(!BST) printf("Not Found
    ");
        else{
            if(X<BST->Data )
                BST->Left =Delete(BST->Left ,X);
            else if(X>BST->Data )
                BST->Right =Delete(BST->Right ,X);
            else{
                if(BST->Left &&BST->Right){
                    Tmp=FindMin(BST->Right );
                    BST->Data =Tmp->Data ;
                    BST->Right =Delete(BST->Right ,BST->Data );
                }
                else{
                    Tmp=BST;
                    if(!BST->Left ) BST=BST->Right ;
                    else BST=BST->Left ;
                    free(Tmp);
                }
            }
        }
        return BST;
    }
    View Code
  • 相关阅读:
    1.8新特性
    线程池
    微服务简介
    缓存三大问题
    Redis分布式锁的正确实现方式
    【java-10&11&12】java语言(Hello World相关)
    【postman】postman 安装失败
    【java-04-09集】JDK的下载和安装&配置环境变量(临时和永久)&命令行方式
    【ISTQB】TM&TA&TTA区别
    【git】学习地址
  • 原文地址:https://www.cnblogs.com/astonc/p/10029354.html
Copyright © 2011-2022 走看看