二叉搜尋樹實現簡單字典

2021-07-29 23:59:36 字數 2800 閱讀 2292

日常生活中我們經常使用字典來查詢單詞的中文意思,也會根據中文來查詢所對應的漢語。前面我們知道二叉樹實現可以迅速查詢乙個資料,而且可以插入和刪除。

這裡我們可以用搜尋二叉樹實現簡單的字典,查詢英文單詞對應的漢語意思。

問題的描敘:

1:如何判斷英文單詞是否拼寫正確;

2:如何統計單詞出現的次數

這裡我們可以用二叉樹的k v演算法;

v(value)是key的附屬資訊,這裡我們可以理解為漢語意思。

一:字典的宣告:

struct binarysearchtreenode

};

我們可以通過查詢演算法來實現,來判斷單詞是否拼寫正確:

統計單詞出現的次數,我們也可以通過查詢來實現。

node* _find(node* root, const k&key)

else

if (cur->_key>key)//左邊

else

}return

null;

}

二:字典的實現:

#include

#include

<

string

>

#include

using namespace std;

template

struct binarysearchtreenode

};template

class binarysearchtree

binarysearchtree(const binarysearchtree&tree)//拷貝構造

:_root(null)

queue

q;q.push(tree._root);

while (!q.empty())

if (cur->_right)}}

binarysearchtree &operator =(binarysearchtree&tree)

~binarysearchtree()

node* find(const k&key)

void insert(const k&key,const v&value)

void inorder()

void remover(const k&key)

protected:

void _inorder(node*root)

_inorder(cur->_left);

cout << cur->_key <<

" "<_value<_inorder(cur->_right);

}bool _insert(node*& root, const k&key,const v&value)

if (root->_key < key)

else

if (root->_key>key)

else

}node* _find(node* root, const k&key)

else

if (cur->_key>key)//左邊

else

}return

null;

}//遞迴實現

bool remover(node*&root, const k&key)

if (root->_key < key)

else

if (root->_key>key)

else

else

if (root->_right ==

null)//右為空

else

parent

->_key = subright->_key;

if (parent

->_right = subright)

else

delete subright;

}return

true;//刪除成功;}}

bool remove(node*

&root, const k&key)

node*cur = root;

node*

parent

=null;

while (cur)

else

if (cur->_key>key)//左邊

else

else

else

}delete cur;

}else

if (cur->_right ==

null)//右為空

else

else

}delete cur;

}else

subparent->_key = subright->_key;//交換兩個值

if (subparent->_right == cur)

else

delete subright;

}return

true;}}

return

false;//沒找到

}void _destroy(node*root)

}protected:

node*_root;

};int main()

; binarysearchtreecounttree;

for (int i = 0; i < sizeof(a) / sizeof(a[0

]); ++i)

else

}system("pause");

return 0;

}

二叉搜尋樹的簡單實現

查詢是否有某個元素,找到返回true,找不到返回false public boolean contains int key else if key else return false 插入某元素,如果已經包含該元素則返回false,插入成功就返回true public boolean insert ...

二叉搜尋樹的簡單實現

上述條件反之亦可 接近二分查詢,最大查詢次數為樹的高度,平均查詢次數log2 n template class t struct bstnode template class t class bstree else if cur val val else if cur val val return ...

二叉搜尋樹的簡單實現

二叉搜尋樹又稱二叉排序樹,它或者是一棵空樹,或者是具有以下性質的二叉樹 1.若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 2.若它的右子樹不為空,則右子樹上所有節點的值都大於根節點的值 3.它的左右子樹也分別為二叉搜尋樹 pragma once templatestruct bstre...