64,635
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class BinaryChainTree;
class BinaryChainTreeNode
{
friend BinaryChainTree;
private:
char data;
BinaryChainTreeNode* leftChild;
BinaryChainTreeNode* rightChild;
public:
BinaryChainTreeNode()
{
leftChild = NULL;
rightChild = NULL;
}
char getData()
{
return this->data;
}
};
class BinaryChainTree
{
private:
BinaryChainTreeNode* root;
public:
BinaryChainTree()
{
root = NULL;
}
BinaryChainTreeNode *getRoot()
{
return root;
}
void creat(BinaryChainTreeNode* t)
{
char ch;
cin>>ch;
if(ch == '#')
{
t = NULL;
}
else
{
t = new BinaryChainTreeNode;
t->data = ch;
creat(t->leftChild);
creat(t->rightChild);
}
}
bool isEmpty()
{
return (root == NULL);
}
int depth(BinaryChainTreeNode* p)
{
int left,right;
if(p == NULL)
{
return 0;
}
else
{
left = depth(p->leftChild);
right = depth(p->rightChild);
}
return ((left > right) ? left : right) + 1;
}
void clear(BinaryChainTreeNode* p)
{
delete p;
}
int count(BinaryChainTreeNode* p)
{
if(p == NULL)
return 0;
else
{
return (count(p->leftChild)+1) + (count(p->rightChild)+1);
}
}
void inorder(void (*Visit)(BinaryChainTreeNode* u),BinaryChainTreeNode* p)
{
if(p)
{
inorder(Visit,p->leftChild);
Visit(p);
inorder(Visit,p->rightChild);
}
}
void postorder(void (*Visit)(BinaryChainTreeNode* u),BinaryChainTreeNode* p)
{
if(p)
{
postorder(Visit,p->leftChild);
postorder(Visit,p->rightChild);
Visit(p);
}
}
void preorder(void (*Visit)(BinaryChainTreeNode* u),BinaryChainTreeNode* p)
{
if(p)
{
Visit(p);
preorder(Visit,p->leftChild);
preorder(Visit,p->rightChild);
}
}
};
#include"binaryChainTree.h"
void visit(BinaryChainTreeNode *t)
{
cout << t->getData();
}
int main()
{
BinaryChainTree tree;
tree.creat(tree.getRoot());
cout<<"Is empty? "<<tree.isEmpty()<<endl;
cout<<"Depth : "<<tree.depth(tree.getRoot())<<endl;
tree.preorder(visit,tree.getRoot());
tree.postorder(visit,tree.getRoot());
return 0;
}
class A
{
private:
int m_nNum;
}
A a;
a.m_nNum= 10;//这么做是不行的
[/quote]
我用的是友元,可以访问的。。我觉得楼下说的是对的,而且改了以后确实是对的
class A
{
private:
int m_nNum;
}
A a;
a.m_nNum= 10;//这么做是不行的
class BinaryChainTreeNode
{
private:
char data;
BinaryChainTreeNode* leftChild;
BinaryChainTreeNode* rightChild;
creat(t->leftChild);
creat(t->rightChild);
left = depth(p->leftChild);
right = depth(p->rightChild);
可能还有别的