zoukankan      html  css  js  c++  java
  • 二叉搜索树

     
     1 Position Find(BinTree BST, ElementType X) {
     2     if (!BST)    return NULL;//查找失败
     3     if (X > BST->Data)    return Find(X, BST->Right);//在右子树中继续
     4     else if (X < BST->Data)    return Find(X, BST->Left);
     5     else return BST;//查找成功,则返回当前结点的地址
     6 }
     7 
     8 BinTree Insert(BinTree BST, ElementType X) {
     9     if (!BST) {//若原树为空,则生成并返回一个结点的二叉搜索树
    10         BST = malloc(sizeof(struct TNode));
    11         BST->Data = X;
    12         BST->Left = BST->Right = NULL;
    13     }
    14     else {
    15         if (X < BST->Data) BST->Left = Insert(X, BST->Left);
    16         else if (X > BST->Data) BST->Right = Insert(X, BST->Right);
    17     }
    18     return BST;
    19 }
    20 
    21 BinTree Delete(BinTree BST, ElementType X) {
    22     Position t;
    23     
    24     if (!BST) printf("Not Found
    ");
    25     else if (X < BST->Data) BST->Left = Delete(X, BST->Left);
    26     else if (X > BST->Data) BST->Right = Delete(X, BST->Right);
    27     else {
    28         if (BST->Left && BST->Right) {//找的的结点若有左右两个子结点
    29             t = FindMin(BST->Right);//在右子树中找到最小的元素填充删除结点
    30             BST->Data = T->Data;
    31             BST->Right = Delete(BST->Data, BST->Right);//在删除结点的右子树中删除最小元素
    32         }
    33         else {
    34             t = BST;//找到的结点有一个或者没有子结点
    35             if (!BST->Left) BST = BST->Right;
    36             else if (!BST->Right) BST = BST->Left;
    37             free(t);
    38         }
    39     }
    40     return BST;
    41 }
    42 
    43 Position FindMin(BinTree BST) {
    44     if (!BST) return NULL;
    45     else if (!BST->Left)    return BST;
    46     else return FindMin(BST->Left);
    47 }
    48 
    49 Position FindMax(BinTree BST) {
    50     if (BST) 
    51         while (BST->Right)    BST = BST->Right;
    52     
    53     return BST;
    54 }
    函数Insert将X插入二叉搜索树BST并返回结果树的根结点指针;
    函数Delete将X从二叉搜索树BST中删除,并返回结果树的根结点指针;如果X不在树中,则打印一行Not Found并返回原树的根结点指针;
    函数Find在二叉搜索树BST中找到X,返回该结点的指针;如果找不到则返回空指针;
    函数FindMin返回二叉搜索树BST中最小元结点的指针;
    函数FindMax返回二叉搜索树BST中最大元结点的指针。
  • 相关阅读:
    c语言--第零次作业
    Beta 冲刺(3/7)
    Beta 冲刺(2/7)
    福大软工 · 第十次作业
    Beta 冲刺(1/7)
    BETA 版冲刺前准备(团队)
    Alpha 事后诸葛亮(团队)
    Alpha冲刺(10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/13205456.html
Copyright © 2011-2022 走看看