一颗二叉查找树的简单实现
2017-03-20 12:09
211 查看
第一次实现的二叉查找树,在别的大牛的博客学习了很久很久。发现由于其使用的技巧较多,不适用与新手模仿,所以自己实践写出了一个有局限性,功能专一化,不完整的二叉查找树。
使用了c++中的类来定义节点,并没有定义专门的树类,以减小代码复杂性。
1.插入(Insert)
2.先序输出(preOrder)
具体的程序。
a533
出来。
代码的优点在于简单,适合像我一样的新手自主摸索参考。其余功能可逐步添加。以达到掌握的目的。
使用了c++中的类来定义节点,并没有定义专门的树类,以减小代码复杂性。
class BSTNode{ private: int key; BSTNode *left; BSTNode *right; public: BSTNode(int value, BSTNode *l, BSTNode *r): key(value),left(l),right(r) {} BSTNode* Insert(BSTNode* tree,int k); void preOrder(BSTNode* tree,int depth); };实现的操作只有两个,但已经能测试出树的主要功能了。
1.插入(Insert)
BSTNode* BSTNode::Insert(BSTNode* tree,int k) { if(tree== NULL){ tree=new BSTNode(k,NULL,NULL,NULL); } else if(k<tree->key) tree->left=Insert(tree->left,k); else tree->right=Insert(tree->right,k); return tree; }这段插入使用了递归实现,在实现函数时需要给定实参指针,不是很方便。但胜在简洁。
2.先序输出(preOrder)
void BSTNode::preOrder(BSTNode* tree,int depth) { if(tree!=NULL) { for(int i=0;i<depth;i++) cout<<" "; cout<<tree->key <<endl; preOrder(tree->left,depth+1); preOrder(tree->right,depth+1); } return; }采取了输出文件式的格式,按树的深度缩进空格,可直观看出书的实现情况。
具体的程序。
int arr[]={1,7,9,41,23,4,3,5,6}; int main() { BSTNode *root=NULL; for(int i=0;i<9;i++){ cout<<arr[i]<<" "; root=root->Insert(root,arr[i]); } cout<<"\n==前序遍历:"<<endl;; root->preOrder(root,0); return 0; }定义好了一数组。将其数据存入BSTNode对象的组成的二叉查找树结构中。并且按先序输出
a533
出来。
代码的优点在于简单,适合像我一样的新手自主摸索参考。其余功能可逐步添加。以达到掌握的目的。
相关文章推荐
- 二叉查找树简单实现
- 二叉查找树的插入和删除简单实现
- 二叉查找树简单实现
- 二叉查找树的简单模板实现
- 二叉查找树的简单实现
- 二叉查找树的简单实现
- 二叉查找树的简单实现
- 一个简单的二叉查找树实现
- C#一颗简单多叉树的实现(原理、广度优先遍历、深度优先遍历)
- LintCode_二叉查找树中搜索区间_简单的递归实现
- 简单数据结构实现——二叉查找树
- 简单数据结构实现——二叉查找树
- 二叉查找树(简单C实现)
- 二叉查找树简单实现
- 程序员面试金典: 9.4树与图 4.5实现一个函数,检查一颗二叉树是否为二叉查找树
- java 数据结构 二叉查找树的简单实现
- 二叉查找树的简单实现
- C#一颗简单多叉树的实现(原理、广度优先遍历、深度优先遍历)
- 二叉查找树的简单模板实现
- 二叉查找树的简单C++实现