zoukankan      html  css  js  c++  java
  • 树的查找

    #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));
    }
  • 相关阅读:
    Luogu-P2295 MICE
    Luogu-P2627 修剪草坪
    Loj-10176-最大连续和
    Luogu-P1886 滑动窗口
    Luogu-P3807 【模板】卢卡斯定理
    Luogu-P1879 [USACO06NOV]玉米田Corn Fields
    Luogu-P1896 [SCOI2005]互不侵犯
    Loj-SGU 223-国王
    Luogu-P2657 [SCOI2009]windy数
    素数
  • 原文地址:https://www.cnblogs.com/szq1214869/p/13073608.html
Copyright © 2011-2022 走看看