zoukankan      html  css  js  c++  java
  • 二叉排序树第一版

           二叉排序树的建树顺序是   左《根《右,缺点很明显,树的深度不一,极端情况可能左空右慢,反之也一样,找最小值要把根节点的左子树全部遍历一遍,最大值同理。目前没发现有什么用处,不过这是平衡二叉树的基础,所以就写了一版,销毁函数就不写了。

           不对请指正。下一版就是平衡二叉树。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    
    using namespace std;
    typedef int type;
    
    struct tree
    {
        type data;
        tree *left,*right;
    }*root;
    void insert1(tree *node,int a)
    {
        tree *temp;
        if(node->data > a)
        {
            if(node->left == NULL)
            {
                temp = new tree;
                if(temp == NULL)
                {
                    puts("fail");
                    return;
                }
                temp->data = a;
                temp->left = temp->right = NULL;
                node->left = temp;
            }
            else
            {
                insert1(node->left,a);
            }
        }
        else
        {
            if(node->right == NULL)
            {
                temp = new tree;
                if(temp == NULL)
                {
                    puts("fail");
                    return;
                }
                temp->data = a;
                temp->left = temp->right = NULL;
                node->right = temp;
            }
            else
            {
                insert1(node->right,a);
            }
        }
    }
    void M_ergodic(tree *node)   //  中序遍历  从大到小输出
    {
        if(node->left != NULL) M_ergodic(node->left);
        printf("%d ",node->data);
        if(node->right != NULL) M_ergodic(node->right);
    }
    int main()
    {
        root = new tree;
        root->left=NULL;
        root->right=NULL;
        if(root == NULL)
        {
            puts("fail");
        }
        int a;
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a);
            if(i==0)
            {
                root->data=a;
            }
            else insert1(root,a);
        }
        M_ergodic(root);
        puts("");
        return 0;
    }
    
    /*
    10
    8 9 1 15 10 3 2 4 6 10
    */
  • 相关阅读:
    layui
    JSON
    jQuery
    实例——模拟验证码
    实例——表格的相关操作:添加行,删除行,编辑单元格
    实例——省市区三级联动 & 还可以输入字符统计
    实例练习——轮播图 & 全选/全不选
    练习-计算器
    定时器 & 日期时间对象 & 正则
    ThinkPHP实现分页
  • 原文地址:https://www.cnblogs.com/liboyan/p/4915971.html
Copyright © 2011-2022 走看看