二叉排序树C++构造
来源:互联网 发布:2016年1月非农数据 编辑:程序博客网 时间:2024/04/30 07:25
初次尝试使用C++来构造二叉排序树
定义:
二叉排序树或者是一颗空树,或者是具有以下性质的树
1.左子树(如果存在)上的所有节点的关键字都小于根节点的关键字
2.右子树(如果存在)上的所有节点的关键字都大于根节点的关键字
3.左子树和右子树也是二叉排序树
构造:
首先构造节点
class node{public: int data; node *left,*right; node(void){ data = NULL, left = NULL, right = NULL; } node(int Data){ data = Data, left = NULL, right = NULL; } ~node(void);};
构造二叉树
class CBTree{public: int maxnum,num; node root; CBTree(void); ~CBTree(void); void NodeAdd(node *&Root,node *Data); bool NodeSearch(node* Root,int Data);};CBTree::CBTree(void){ maxnum=100; num=0; root=NULL;}CBTree::~CBTree(void){ //析构}
这样一棵简单的二叉树的基本结构就搞定了,不过要成为具体的二叉
排序树就需要在节点插入的时候些处理了。
节点插入:
void CBTree::NodeAdd(node* &Node,node* NodeData){ if(num==maxnum) { cout<<"full"<<endl; return; } if(num==0) { *Node=*NodeData; num++; } else { if(Node==NULL) { Node=NodeData; num++; } else if(Node->data>NodeData->data) NodeAdd(Node->left,NodeData); else NodeAdd(Node->right,NodeData); }}
节点查找:
bool CBTree::NodeSearch(node* Node,int Data){ if(num==0) { return false; } if(Node) { if(Node->data==Data) { return true; } else if(Node->data>Data) { return NodeSearch(Node->left,Data); } else { return NodeSearch(Node->right,Data); } } else { return false; }}
构造一棵二叉排序树:
void main(){ int i,a; CBTree Btree; node *Node,*Root=&Btree.root; for(i=0;i<10;i++) { cin>>a; while(Btree.NodeSearchRoot, a)) { cout << "已存在,请重新输入" << endl; cin >> a; } Node=new node(a); Btree.NodeAdd(Root,Node) }}
1 0
- 二叉排序树的构造,插入,删除,完整c代码实现
- 二叉排序树(c++)
- 二叉排序树 c
- 二叉排序树:查找,插入,构造
- 二叉排序树C++构造
- 二叉排序树构造学生管理系统
- 二叉排序树(BST)构造与应用
- 二叉排序树的构造与插入
- 二叉排序树的构造、查找、插入及删除算法的实现(C++)
- C/C++二叉排序树
- c/c++二叉排序树
- c版二叉排序树
- 二叉排序树的C代码
- 二叉排序树 C语言实现
- 二叉排序树 c (未完)
- C实现二叉排序树
- 二叉排序树C实现
- 二叉排序树及其C代码
- uva11100
- 数据文件误删导致数据库用户不能登陆
- 训练深度模型的优化问题(十二)
- poj 2362 Square
- stm32f10x.h 是库3.0以后的; stm32f10x_lib.h 这个是库2.0的吧 哎,打开看看不就知道了啊!
- 二叉排序树C++构造
- 转义字符及其意义
- 使用BaseAdapter实现ListView
- 数据结构——二叉树的实现
- html头部
- 大话设计模式之模板方法模式(Java版实现)考生做试卷问题
- java跳出多重循环
- 如何让你的开发团队成为虎狼之师?
- IOS动态创建控件通过tag处理单击事件