二叉查找数C++ 数组模拟二叉树及面向对象实现
来源:互联网 发布:淘宝一键开店 编辑:程序博客网 时间:2024/06/06 12:58
数组实现
#include "stdafx.h"#include <iostream>using namespace std;#define iArrSize sizeof(iArr)/sizeof(iArr[0])void inertValue(int *iBinTree, int iNode, int iValue){if (iBinTree[iNode] == 0){//默认设定不对0插入iBinTree[iNode] = iValue;}else{if (iBinTree[iNode] > iValue){inertValue(iBinTree,iNode * 2 + 2,iValue);}else if (iBinTree[iNode] < iValue){inertValue(iBinTree,iNode * 2 + 1,iValue);}else return;//不插入已经存在的节点}////非递归方法//while(iNode < 10000){//if (iBinTree[iNode] == 0){//默认设定不对0插入//iBinTree[iNode] = iValue;//return;//}//if (iBinTree[iNode] > iValue){//iNode = iNode * 2 + 2;//}else if (iBinTree[iNode] < iValue){//iNode = iNode * 2 + 1;//}else return;//不插入已经存在的节点//}return ;}void printRs(int *iArr,int iNode){if (iArr[iNode] != 0){//默认设定不对0插入printRs(iArr,iNode * 2 + 1);cout<<iArr[iNode]<<" ";printRs(iArr,iNode * 2 + 2);}return;}int main(){int iArr[] = {9,10,200,3,400,12,-1};int iArrRs[iArrSize+10000];memset(iArrRs,0,iArrSize + 10000);for (int i = 0;i<iArrSize; i++){inertValue(iArrRs,0,iArr[i]);}//中序遍历printRs(iArrRs,0);cout<<endl;return 0;}
面向对象实现
#include "stdafx.h"#include <iostream>#include <stack>using namespace std;#define iArrSize sizeof(iArr)/sizeof(iArr[0])class Node{public :Node *leftNode;Node *rightNode;int iNodeValue;Node(){iNodeValue = 0;this->leftNode = NULL;this->rightNode = NULL;}Node(int iNodeValue, Node *leftNode, Node *rightNode){this->iNodeValue = iNodeValue;this->leftNode = leftNode;this->rightNode = rightNode;}};void insertValue(Node *nodeTree,int iValue){////递归实现//if (nodeTree == NULL){//nodeTree = new Node(iValue,NULL,NULL);//}else{//if (nodeTree->iNodeValue > iValue){//if(nodeTree->rightNode == NULL){//Node *nodeTemp = new Node(iValue,NULL,NULL);//nodeTree->rightNode = nodeTemp;//}else {//insertValue(nodeTree->rightNode,iValue);//}//}else if (nodeTree->iNodeValue < iValue){//if(nodeTree->leftNode == NULL){//Node *nodeTemp = new Node(iValue,NULL,NULL);//nodeTree->leftNode = nodeTemp;//}else {//insertValue(nodeTree->leftNode,iValue);//}//}else return;//相等不插入//}//非递归实现Node *nodeTemp = nodeTree;while(nodeTree != NULL){nodeTemp = nodeTree;if (nodeTree->iNodeValue >iValue) nodeTree = nodeTree->rightNode;else if (nodeTree->iNodeValue <iValue) nodeTree = nodeTree->leftNode;else return;}Node *node = new Node(iValue,NULL,NULL);if (nodeTemp->iNodeValue > iValue) nodeTemp->rightNode = node;else nodeTemp->leftNode = node;return;}//中序遍历void printRs(Node *tree){//if (NULL != tree){//递归实现//printRs(tree->leftNode);//cout<<tree->iNodeValue<<" ";//printRs(tree->rightNode);//}//非递归实现//栈存节点stack<Node*> sNode;Node *pNode = tree;while( pNode != NULL || !sNode.empty()){while( pNode != NULL){sNode.push(pNode);pNode = pNode->leftNode;}if (!sNode.empty()){pNode = sNode.top();cout<<pNode->iNodeValue<<" ";sNode.pop();pNode = pNode->rightNode;}}cout<<endl;return;}int main(){int iArr[] = {9,10,200,3,400,12,-1};Node nodeRs;for (int i = 0;i<iArrSize; i++){insertValue(&nodeRs,iArr[i]);}//中序遍历printRs(&nodeRs);cout<<endl;return 0;}
- 二叉查找数C++ 数组模拟二叉树及面向对象实现
- 数组实现二叉查找树
- 二叉查找树 (数组模拟内存)
- 【二叉查找树】c实现
- 数据结构:二叉数查找树基本实现
- c#使用数组实现二叉查找树
- 基础简单的数据结构-C语言-二叉查找树数组模拟
- 树定义及二叉查找树实现
- 二叉查找树详解及C++实现
- 二叉查找树(理论及实现)
- 二叉查找树及C++模板实现
- 二叉查找树(c语言实现)
- 二叉查找树C语言实现
- 二叉查找树c语言实现
- 二叉查找树的实现(using C)
- 二叉查找树C实现代码
- C 实现数据结构二叉查找树
- 二叉查找树C语言实现
- Android高手进阶教程(十五)之---通过Location获取Address的使用!
- 红酒收藏越久越好吗?
- 数字转换为英文串
- python爬虫爬保研论坛
- Oracle错误解决:ORA-12519, TNS:no appropriate service handler found
- 二叉查找数C++ 数组模拟二叉树及面向对象实现
- linux:获取系统内存使用情况
- SQL数据库的常用操作
- merge
- 线性代数导论35——线性代数全总结
- hdu 1754 I Hate It
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Qt 编码 QObject::tr()
- Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!