• 二叉排序树的建立


    二叉排序树是一种左子树的值小于根,而右子树的值大于根的的一棵树,通过中序遍历可以得到一个有序的序列= =

    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<iostream>
    #include<stdlib.h>
    using namespace std;
    typedef struct node
    {
        int data;
        struct node *left,*right;
    }binode ,*bitree;
    bool find(bitree T,int k,bitree f,bitree &p)//查找函数,在T树找查找k是否存在,f表示T的双亲节点,p用来指向查找路径中的最后一个节点 
    {
        if(T==NULL)
        {
            p=f;
            return false;
        }
        else if(k==T->data)
        {
            p=T;
            return true;
        }
        else if(k<T->data)
        return find(T->left,k,T,p);
        else
        return find(T->right,k,T,p);
    }
    int insert(bitree &T,int k) 
    {
        bitree s,p;
        if(!find(T,k,NULL,p))//查找k是否在树中存在 
        {
            s=(bitree)malloc(sizeof(binode));
            s->data=k;
            s->left=s->right=NULL;
            if(p==NULL)//若p==NULL,则说明现在的树是一颗空树,说明s为根节点 
            T=s;
            else if(k<p->data)//k<p->data说明s节点应该放在p的左子树 ,反之则放在右子树 
            p->left=s;
            else
            p->right=s;
           return 0;
        }
        return 1;
    }
    void visit(bitree T)
    {
     if(T!=NULL)
     {
      printf("%d ",T->data);
     }
    }
    void midvisit(bitree T)
    {
     if(T!=NULL)
     {
      midvisit(T->left);
    
      visit(T);
    
      midvisit(T->right);
     }
    }
    int main()
    {
        int n,k,i;
        scanf("%d",&n);
        bitree T;
        T=NULL;
        for(i=0;i<n;i++)
        {
            scanf("%d",&k);
            insert(T,k); 
        }
        midvisit(T);
        return 0;
    }
  • 相关阅读:
    (转)python编写登录接口
    (转)Python之文件读写
    (转)python strip()函数 去空格 函数的用法
    (转)模块readline解析
    (转)跟着老男孩一步步学习Shell高级编程实战
    图片服务器优化 解决流量和存储问题
    某大型网站图片服务器改造方案
    雅虎网页优化14条原则
    独立的图片服务器架构
    城市分站设计思路
  • 原文地址:https://www.cnblogs.com/NaCl/p/4811501.html
Copyright © 2020-2023  润新知