• 树的查找


    #include<stdio.h>
    #include<stdlib.h>
    
    //树的定义(结点定义)
    typedef char DataType;
    typedef struct Node {
         DataType  data; 
         struct  Node  *lchild; 
         struct  Node  *rchild;                   
    } BiNode,*BiTree;
    
    //创建树的二叉链表(递归)
    void CreateBiTree(BiTree *bt)
    {
        char ch;
        ch = getchar();
        if(ch=='.') *bt=NULL;
        else 
        {
            *bt= (BiNode *)malloc(sizeof(BiNode)); 
            (*bt)->data=ch;
             CreateBiTree(&((*bt)->lchild)); //生成左子树
             CreateBiTree(&((*bt)->rchild)); //生成右子树
        }
    }
    
    //输出二叉树的元素(先序)
    void Print(BiTree bt)
    {
        if(bt==NULL)    
            return;
        else
        {
            printf("%c ", bt->data);
            Print(bt->lchild);
            Print(bt->rchild);
        }
    
    }
    
    int find(BiTree bt,int h,char a)
     {
        int t;
        if(bt)
        {
            if(a==bt->data)
                return h;
            t=find(bt->lchild,h+1,a);           //再次调用函数,层数加一,到左孩子结点。
            if(t!=0)
                return t;
            else
                return find(bt->rchild,h+1,a); //再次调用函数,层数加一,到右孩子结点。
        }
            return 0;
    
     }
    
    
    
    //主函数
    void main()
    {
        int l=1;
        BiTree T;
        printf("请输入二叉树:");
        CreateBiTree(&T);
        char ch;
        printf("请输入要查找的结点:");
        getchar();
        ch = getchar();
        Print(T);
        printf("
    %d
    ",find(T,l,ch));
    }
  • 相关阅读:
    比较好的总结runtime
    开发证书详解
    删除数组中特定元素推荐做法
    pbxproj文件冲突解决办法
    svn不提交user文件
    c提高第六次课 文件读取
    c++函数指针
    c提高第五次作业
    c提高第四次作业
    c提高第四课
  • 原文地址:https://www.cnblogs.com/szq1214869/p/13073608.html
Copyright © 2020-2023  润新知