本文实例讲述了C语言实现二叉树的搜索及相关算法。分享给大家供大家参考,具体如下:
二叉树(二叉查找树)是这样一类的树,父节点的左边孩子的关键都小于它,右边孩子的关键都大于它。
二叉树在查找和存储中通常能保持logn的查找,插入,删除,以及前驱,后继,最大值,最小值复杂度,并且不占用额外的空间。
这里演示二叉树的搜索及相关算法:
# include# include 使用名称空间性病; 类tree_node { 公众: int的关键; tree_node *左; tree_node *正确; int标签; tree_node () { 关键=0; 左边=右边=零; 标签=0; } ~ tree_node () {} }; 无效访问(int值){ printf (" % d \ n”,值); }//插入 tree_node * insert_tree (tree_node *根,tree_node *节点){ 如果节点(!){ 返回根; } 如果(根){ 根=节点; 返回根; } tree_node * p=根; 而(p) { 如果(节点→键& lt;p→键){ 如果(p→左){ p=p→左; } 其他{ p→左=节点; 打破; } } 其他{ 如果(p→右){ p=p→正确; } 其他{ p→=节点; 打破; } } } 返回根; }//查询关键所在节点 tree_node * search_tree (tree_node *根,int键){ tree_node * p=根; 而(p) { 如果(关键& lt;p→键){ p=p→左; } else if(关键在p→键){ p=p→正确; } 其他{ 返回p; } } 返回NULL; }//创建树 tree_node * create_tree (tree_node * t, int n) { tree_node *根=t; for (int i=1;i C语言实现二叉树的搜索及相关算法示例