第4章 树 - 二叉搜索树数据结构实现
2014-08-12 23:36
253 查看
在这里挖个坑,以后忘记了,再回到这里查询下
头文件
头文件
#ifndef _Tree_H struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree; SearchTree MakeEmpty( SearchTree T); Position Find( int X, SearchTree T); Position FindMin( SearchTree T); Position FindMax( SearchTree T); SearchTree Insert( int X, SearchTree T); SearchTree Delete( int X, SearchTree T); int Retrieve( Position P); int Depth( SearchTree T); #endifcpp文件
#include <iostream> #include "SearchTree.h" using namespace std; struct TreeNode { int Element; SearchTree Left; SearchTree Right; }; SearchTree MakeEmpty( SearchTree T) { if(T != NULL) { MakeEmpty(T->Left); MakeEmpty(T->Right); free(T); } return T; } Position Find( int X, SearchTree T) { if(T == NULL) return NULL; else if(X < T->Element) return Find(X, T->Left); else if(X > T->Element) return Find(X, T->Right); else return T; } Position FindMin(SearchTree T) { if(T == NULL) return NULL; else if(T->Left == NULL) return T; else return FindMin(T->Left); } Position FindMax(SearchTree T) { if(T != NULL) while (T->Right != NULL) T = T->Right; return T; } SearchTree Insert( int X, SearchTree T) { if(T == NULL) { T = (TreeNode*)malloc(sizeof(TreeNode)); T->Element = X; T->Left = T->Right = NULL; } else if(X < T->Element) T->Left = Insert(X, T->Left); else if(X > T->Element) T->Right = Insert(X, T->Right); return T; } SearchTree Delete( int X, SearchTree T) { Position TmpCell; if(T == NULL) return NULL; else if(X < T->Element) T->Left = Delete(X, T->Left); else if(X > T->Element) T->Right = Delete(X, T->Right); else if(T->Left && T->Right) { TmpCell = T; T = FindMin(T->Right); T->Right = Delete(T->Element, T->Right); free(TmpCell); } else { TmpCell = T; if(T->Left != NULL) T = T->Left; if(T->Right != NULL) T = T->Right; free(TmpCell); } return T; } <pre name="code" class="cpp">int Depth( SearchTree T) { int DepthLeft, DepthRight; if(T == NULL) return 0; else { DepthLeft = Depth(T->Left); DepthRight = Depth(T->Right); if(DepthLeft >= DepthRight) return DepthLeft + 1; else return DepthRight + 1; } }int Retrieve( Position P){return P->Element;}
相关文章推荐
- 数据结构之二叉搜索树的实现
- 数据结构-二叉搜索树(Binary Search Tree)的C++实现模板
- 二叉搜索树数据结构完整实现
- 数据结构——树(9)——二叉搜索树的操作实现C++代码
- 【数据结构】之实现二叉搜索树
- javascript数据结构之二叉搜索树实现方法
- 数据结构 二叉搜索树实现
- 【数据结构】二叉搜索树(增、删、查)的递归与非递归实现
- 【数据结构】二叉搜索树的插入,删除,查找等基本操作的实现
- 《C++实现数据结构》:二叉搜索树
- 【算法与数据结构】二叉搜索树的Java实现
- 数据结构(一)二叉搜索树-递归实现
- 二叉搜索树的实现(数据结构中的“hello,world”)
- 数据结构-二叉树(应用篇)-之二叉搜索树 C和C++的实现
- 二叉搜索树基本数据结构实现
- 数据结构(一)二叉搜索树-递归实现
- 数据结构--二叉搜索树的实现(C++)
- javascript数据结构之二叉搜索树实现方法
- 数据结构-二叉搜索树的实现
- 【数据结构】二叉搜索树的递归与非递归实现