1. 程式人生 > >一個簡單的英語到漢語的翻譯過程(搜尋二叉樹)

一個簡單的英語到漢語的翻譯過程(搜尋二叉樹)

英語到漢語的翻譯:

原理:在我看來,既可以運用陣列,也可以運用搜索二叉樹,或者是其它任意一種儲存結構應該都可以完成這個操作,但應用搜索二叉樹,效率會更高,因為每一次搜尋,就會排除許多無用的資料。

    

例如,在上圖中查詢1,只需要通過上圖的3次比較就可以得出結果,每一次排除了多種無效資料。

方法步驟:

1)應用到搜尋二叉樹的每個節點,節點資訊包括英文,漢語,左孩子,右孩子。

3)查詢資料

標頭檔案:英漢詞典.h

#pragma once #include<stdio.h> #include<Windows.h> #include<stdlib.h> #include<string.h>

typedef struct English_Chinese{     char* array1;     char*array2;     struct English_Chinese*left;     struct English_Chinese*right; }En_Ch;

//建立,插入,a->英文,b->漢語 int CreatTree(En_Ch**tree, char*a, char*b) {     En_Ch*root = *tree;     En_Ch*parent = NULL;     while (root != NULL)//如果節點不為空     {         if (strncmp((root->array1), a,20) == 0)//由於二叉樹不允許存在兩個關鍵碼相同的數             return -1;         parent = root;//父節點指向節點         if (strncmp(root->array1, a,20) ==1)//如果節點的關鍵碼大於a的值,節點指向它的左孩子             root = root->left;         else  //否則指向它的右孩子             root = root->right;     }     En_Ch*node = (En_Ch*)malloc(sizeof(En_Ch));//建立新節點     (node->array1) = a;     (node->array2 )= b;     node->left = NULL;     node->right = NULL;

    if (parent == NULL)//如果父節點為空,表明為空樹,將新節點作為搜尋二叉樹的根節點。     {         *tree = node;         return 0;     }     if (strncmp(parent->array1, a,20) ==1)//如果父節點的關鍵碼大於a的值,父節點的左孩子指向新節點。         parent->left = node;     else//否則右孩子指向新節點         parent->right = node;     return 0; } //查詢 int Look(En_Ch*tree, char *a) {     En_Ch*root = tree;     while (root != NULL){         if (strncmp(root->array1, a, 20) == 0)         {             printf("%s: %s\n", root->array1, root->array2);             return 0;         }         if (strncmp(root->array1, a, 20) > 0)             root = root->left;         else             root = root->right;     }     if (root == NULL)     {         printf("%s: 沒找到!\n",a);         return -1;     }     return 0; }

void test() {     En_Ch*tree = NULL;     CreatTree(&tree, "hehe", "呵呵");     CreatTree(&tree, "apple", "蘋果");     CreatTree(&tree, "blana", "香蕉");     CreatTree(&tree, "like", "喜歡");     CreatTree(&tree, "love", "愛");     CreatTree(&tree, "pink", "粉紅");

    Look(tree, "love");     Look(tree, "abfhk");

    printf("oo"); }

原始檔:

#include"英漢詞典.h"

int main() {     test();

    system("pause");     return 0; }