zoukankan      html  css  js  c++  java
  • 04-树7 二叉搜索树的操作集 中国大学MOOC-陈越、何钦铭-数据结构-2020夏

    题目: https://pintia.cn/problem-sets/1268384564738605056/problems/1276814005115539459
    题解: https://blog.csdn.net/Dilly__dally/article/details/82025393
    代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef int ElementType;
    typedef struct TNode* Position;
    typedef Position BinTree;
    struct TNode {
        ElementType Data;
        BinTree Left;
        BinTree Right;
    };
    
    void PreorderTraversal(BinTree BT); /* 先序遍历,由裁判实现,细节不表 */
    void InorderTraversal(BinTree BT);  /* 中序遍历,由裁判实现,细节不表 */
    
    BinTree Insert(BinTree BST, ElementType X);
    BinTree Delete(BinTree BST, ElementType X);
    Position Find(BinTree BST, ElementType X);
    Position FindMin(BinTree BST);
    Position FindMax(BinTree BST);
    
    int main()
    {
        BinTree BST, MinP, MaxP, Tmp;
        ElementType X;
        int N, i;
    
        BST = NULL;
        scanf("%d", &N);
        for (i = 0; i < N; i++) {
            scanf("%d", &X);
            BST = Insert(BST, X);
        }
        printf("Preorder:"); PreorderTraversal(BST); printf("
    ");
        MinP = FindMin(BST);
        MaxP = FindMax(BST);
        scanf("%d", &N);
        for (i = 0; i < N; i++) {
            scanf("%d", &X);
            Tmp = Find(BST, X);
            if (Tmp == NULL) printf("%d is not found
    ", X);
            else {
                printf("%d is found
    ", Tmp->Data);
                if (Tmp == MinP) printf("%d is the smallest key
    ", Tmp->Data);
                if (Tmp == MaxP) printf("%d is the largest key
    ", Tmp->Data);
            }
        }
        scanf("%d", &N);
        for (i = 0; i < N; i++) {
            scanf("%d", &X);
            BST = Delete(BST, X);
        }
        printf("Inorder:"); InorderTraversal(BST); printf("
    ");
    
        return 0;
    }
    /* 你的代码将被嵌在这里 */
    BinTree Insert(BinTree BST, ElementType X)
    {
        if (BST == NULL) {
            BST = (BinTree)malloc(sizeof(BinTree));
            BST->Data = X;
            BST->Left = BST->Right = NULL;
        }
        else
        {
            if (BST->Data > X)
            {
                BST->Left = Insert(BST->Left, X);
            }
            else if (BST->Data < X)
            {
                BST->Right = Insert(BST->Right, X);
            }
        }
        return BST;
    }
    BinTree Delete(BinTree BST, ElementType X) {
    
        if (BST == NULL) {
            printf("Not Found
    ");
        }
        else {
            if (X > BST->Data)
                BST->Right = Delete(BST->Right, X);
            else if (X < BST->Data)
                BST->Left = Delete(BST->Left, X);
            else {
                if (BST->Left && BST->Right) {
                    Position tmp = FindMin(BST->Right);
                    BST->Data = tmp->Data;
                    BST->Right = Delete(BST->Right, BST->Data);
                }
                else {
                    Position tmp = BST;
                    if (BST->Left)
                        BST = BST->Left;
                    else
                        BST = BST->Right;
                    free(tmp);
                }
            }
        }
        return BST;
    }
    Position Find(BinTree BST, ElementType X)
    {
        if (BST)
        {
            if (X == BST->Data)return BST;
            else if (X > BST->Data)return Find(BST->Right, X);
            else return Find(BST->Left, X);
        }
        return BST;
    }
    Position FindMin(BinTree BST)
    {
        if (BST == NULL)return BST;
        if (BST->Left)FindMin(BST->Left);
        else return BST;
    }
    Position FindMax(BinTree BST)
    {
        if (BST == NULL)return BST;
        if (BST->Right)FindMax(BST->Right);
        else return BST;
    }
  • 相关阅读:
    代码:城市名称的联想下拉框。可按拼音搜索、按汉字搜索,是一种很简单的实现方式
    代码:拖拽
    插件:zTree
    代码:遍历
    学习笔记:Stage.js(又叫Cut.js)——2D canvas 开发库,游戏方面的
    前端模块化、构建工具
    二级联动下拉菜单
    thinkphp的目录结构设计经验总结
    tp 路径表示
    liunx 根目录介绍
  • 原文地址:https://www.cnblogs.com/simon-chou/p/13619777.html
Copyright © 2011-2022 走看看