为了账号安全,请及时绑定邮箱和手机立即绑定

写了一个二叉搜索树,搜索函数返回搜索次数,为什么次数一直是0,要哭了,求帮忙

写了一个二叉搜索树,搜索函数返回搜索次数,为什么次数一直是0,要哭了,求帮忙

C++
慕UI8082421 2016-11-26 23:12:03
//二叉查找树 #include<iostream> using namespace std; class Node{ public: // int index;//索引 int data; Node *pLchild; Node *pRchild; Node(); void Addnode(int x,Node *&p); int Find(int x,Node *p,int &count); void insubtree(Node*node); }; Node::Node() { data=0; pLchild=NULL; pRchild=NULL; } void Node::Addnode(int x,Node *&p) { if(!p){ p=new Node(); p->data =x; p->pLchild =p->pRchild =NULL; } else{ if(x<p->data ){ Addnode(x,p->pLchild); } else if(x>p->data){ Addnode(x,p->pRchild); } } } int Node::Find(int x,Node *p,int &count){ if(p==NULL) return 0; count+=1; if(x==p->data ) return count; else if(x>p->data ) Find(x,p->pRchild ,count); else if(x<p->data ) Find(x,p->pLchild ,count); } void Node::insubtree(Node*node) { if(node==NULL) return; insubtree(node->pLchild);//先遍历左子树 cout<<node->data<<" ";//输出根节点 insubtree(node->pRchild);//再遍历右子树 } class Tree{ public: Tree(int data); ~Tree(); void Addnode(int x); int Find(int x); void insubtree(); private: Node *pRoot; }; Tree::Tree(int data){ pRoot=new Node(); pRoot->data=data; pRoot->pLchild =NULL; pRoot->pRchild =NULL; } void Tree::Addnode(int x){ pRoot->Addnode(x,pRoot); } int Tree::Find(int x) { int count=0; pRoot->Find(x,pRoot,count); } void Tree::insubtree() { pRoot->insubtree(pRoot); } int main(){ int n; cin>>n; Node a[n]; cin>>a[0].data ; Tree *tree=new Tree(a[0].data); //34, 76, 45, 18, 26, 54, 92, 65 for(int i=0;i<n-1;i++){ cin>>a[i+1].data; tree->Addnode(a[i+1].data); } tree->insubtree() ; //int count=0; cout<<tree->Find(76); }
查看完整描述

1 回答

?
onemoo

TA贡献883条经验 获得超454个赞

发帖时有格式化工具,把代码格式化好再发一遍吧,你这一堆东西看得我也快哭了...

查看完整回答
2 反对 回复 2016-11-29
  • 1 回答
  • 0 关注
  • 1207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信