二叉查找树
来源:互联网 发布:web前端开发的软件 编辑:程序博客网 时间:2024/05/17 10:03
使二叉树成为二叉查找树的性质是,对于树中的每一个节点X,他的左子树中所有关键字值小于X的关键字,而他的右子树中所有关键字值大于X的值。
1:二叉查找树的声明
#ifndef _Tree_Hstruct TreeNode;typedef struct TreeNode *Position;typedef struct TreeNode *SearchTree;SearchTree MakeEmpty( SearchTree T );Position Find( Element x, SearchTree T );Position FindMin( SearchTree T );Position FindMax( SearchTree );SearchTree Insearch( Element x,SearchTree T );ElementType ( Position P );#endifstruct TreeNode{ElementType Element;SearchTree Left;SearchTree Right;};
2:Find操作
PositionFind( ElementType x,SearchTree T ){if( T == NULL ) return NULL;if( x < T->Element ) return Find( x,T->Left );if( x > T->Element ) return Find( x,T->Right ); else return T;}
3:FindMin与FindMax操作
PositionFindMin( SearchTree T ){if( T == NULL ) return NULL;elseif( T->Left == NULL ) return T;else return FindMin( T->Left );}PositionFindMax( SearchTree T ){if( T != NULL ) while( T->Right !=NULL ) T = T->Righrt;return T;}4:Insert操作
SearchTreeInsearch( ElementType x,SearchTree T ){if( T== NULL ){T = malloc( sizeof( struct TreeNode ) );if( T == NULL ) errno( "Out of space!" );else {T->Element = x;T->Left = T->Right = NULL;}}elseif( x < T->Element ) T->Left = Insearch( x,T->Left );elseif( x>T->Element ) T->Right = Insearch( x,T->Right );return T;}5:Delete操作
SearchTreeDelete( Element x,SearchTree T ){Position TmpCell;if( T == NULL ) Error( "Element not found!" );elseif( x < T->Element ) T->Left=Delete( x,T->Left );if( x > T->Element ) T->Right=Delete( x,T->Right );elseif( T->Left && T->Right ){TmpCell = FindMin( T->Right );T->Element = TmpCell->Element;T->Right = Delete( T->Element,T->Right );}else{TmpCell = T;if( T->Left == NULL ) T = T->Right;elseif( T->Right == NULL )T = T->Left;free( TmpCell );}return T;}
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- 据国外媒体Theverge称微软目前正计划整合Windows Phone应用商店
- iOS之Storyboard导航大揭秘(1)
- JAXB Bean转xml,xml转bean
- javascript 到底有 多慢
- WebSphere应用服务器内存泄漏探测与诊断工具选择最佳实践
- 二叉查找树
- response.setContentType()的String参数及对应类型
- tableView的中cell添加图像
- Newtonsoft.Json序列化和反序列
- 对象属性拷贝方法,支持源对象为MAP的拷贝
- 4.7
- opensource sandbox分析
- OVS document and Relations between Tools
- linux .bashrc文件修改和生效