日常生活中我們經常使用字典來查詢單詞的中文意思,也會根據中文來查詢所對應的漢語。前面我們知道二叉樹實現可以迅速查詢乙個資料,而且可以插入和刪除。
這裡我們可以用搜尋二叉樹實現簡單的字典,查詢英文單詞對應的漢語意思。
問題的描敘:
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...