第4章 树 - 二叉搜索树数据结构实现

来源:互联网 发布:vue删除数组中的对象 编辑:程序博客网 时间:2024/06/02 04:18

在这里挖个坑,以后忘记了,再回到这里查询下

头文件

#ifndef _Tree_Hstruct 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);#endif
cpp文件

#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;elsereturn DepthRight + 1;}}
int Retrieve( Position P){return P->Element;}


0 0