نمایش نتایج 1 تا 3 از 3

نام تاپیک: نحوه پیاده سازی درخت برای یک دیکشنری

  1. #1

    نحوه پیاده سازی درخت برای یک دیکشنری

    سلام. من می خواهم با استفاده از درخت برای دیکشنری یک برنامه بنویسم ولی نحوه پیاده سازی درخت را بلد نیستم. می خواستم کمکم کنید.البته خودم یک چیزهایی نوشتم ولی جواب نمی دهد.
    class Node {
    friend tree;
    private:
    char word[20], mean[20];
    Node *right, *left;
    public:
    Node();
    Node(char word[], char mean[]);
    };
    // ********
    Node :: Node(){
    word[] =" ";
    mean[] =" ";
    right = left = 0;
    }
    // ********
    Node :: Node(char w[], char m[]){
    strcpy(word, w);
    strcpy(mean, m);
    right = left = 0;
    }
    /// ************
    class Tree {
    private:
    Node *root;
    void Inorder(Node *t);
    public:
    void Inorder();
    void add(char w[], char m[]);
    Tree();
    bool update(char w[], char m[]);
    bool search(char w[]);
    };
    // ********
    void Tree :: Inorder(){
    Inorder(root);
    }

  2. #2
    برای دیکشنری معمولا از درخت جستجوی دودوئی (BST) استفاده میشود . در این نوع درخت ، عناصری که کوچکتر از ریشه هستند ، فرزند چپ و عناصری که بزرگتر از ریشه هستند ، فرزند راست ریشه خواهند شد . بدیهی است عنصر تکراری در درخت موجود نخواهد بود . کد زیر نمونه ابتدائی یک درخت جستجو هست که حتما برای طراحی یک دیکشنری باید بیشتر روش کار بشه .

    class Node
    {
    char *word;
    char *mean;
    public:
    Node *Lchild;
    Node *Rchild;
    Node(char *w="", char *m="")
    {
    strcpy(word,w);
    strcpy(mean,m);
    Lchild=0;
    Rchild=0;
    }
    void link (Node *prvnode, Node *newnode) //گره قبلی را به گره جدید در حال ساخت با شروط زیر پیوند میزند
    {
    if (strcmp(prvnode.getword(), word)<0) // اگر کلمه جدید کوچکتر از قبلی باشد
    prvnode.Lchild=newnde;
    else if ( strcmp(prvnode.getword(), word)<0) // اگر کلمه جدید بزرگتر از کلمه قبلی باشد
    prvnode.Rchild=newnde;
    else
    cout<<"Entery word is repetitive";
    }
    char* getword()
    {
    return word;
    }
    char* getmean()
    {
    return mean;
    }
    } *root=0; // است NULL ریشه درخت که در ابتدا
    Node *curnode, // گره ای که در حال حاضر روی آن کار میکنیم
    *prvnode, // گره قبلی
    *newnode; // گره جدیدی که ساخته میشود
    void main ()
    {
    .
    .
    .
    }

    برای جستجوش هم باید توابعی ، خارج از کلاس تعریف کنید تا از ریشه و با توجه به فرزندان چپ و راست ، درت را جستجو کنند .

  3. #3
    ممنون خیلی کمک کردید

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •