데이터 구조 - 코드 구현 - 이 진 트 리
#include
using namespace std;
typedef struct bitnode {
char data;
bitnode *lchild,*rchild;
} bitnode;
class bitt {
private:
bitnode *pt;
void create(bitnode *&t);
void intra(bitnode *t);
int countLeaf(bitnode *t);
int count(bitnode *t);
int countone(bitnode *t);
int countx(bitnode *t);
public:
void createbitree();
void inordertra();
int countbitLeaf( );
int countbit();//
int countbitone();// 1
int countxbit( );
};
int bitt::countx(bitnode *t) {
if(t) {
if(t->lchild&&!t->rchild||!t->lchild&&t->rchild)return 1+countx(t->lchild)+countx(t->rchild);
else return countx(t->lchild)+countx(t->rchild);
} else return 0;
}
int bitt::countone(bitnode *t) {
if(t) if(t->lchild&&t->rchild==NULL||t->rchild&&t->lchild==NULL) return 1+countone(t->lchild)+countone(t->rchild);
else return countone(t->lchild)+countone(t->rchild);
return 0;
}
int bitt:: countxbit( ) {
bitnode *p=pt;
return countx(p);
}
void bitt:: create(bitnode *&t) {
char ch;
cin>>ch;
if(ch=='.')t=NULL;
else {
t=new bitnode;
t->data=ch;
create(t->lchild);
create(t->rchild);
}
}
void bitt::intra(bitnode *t) {
if(t) {
intra(t->lchild);
cout<data;
intra(t->rchild);
}
}
void bitt::createbitree() {
bitnode *p;
create(p);
pt=p;
}
void bitt::inordertra() {
bitnode *p=pt;
intra(p);
}
int bitt::countLeaf(bitnode *t) {
if(t) {
int m=countLeaf(t->lchild);
int n=countLeaf(t->rchild);
if(m+n==0)return 1;
else return m+n;
} else return 0;
}
int bitt::countbitLeaf() {
bitnode *p=pt;
return countLeaf(p);
}
int bitt::count(bitnode *t) {
if(t) if(t->lchild||t->rchild)
return 1+count(t->lchild)+count(t->rchild);
return 0;
}
int bitt::countbit() {
bitnode *p=pt;
return count(p);
}
int bitt::countbitone() {
bitnode *p=pt;
return countone(p);
}
int main() {
bitt pt;
pt.createbitree();
pt.inordertra();
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
9. 데이터 구조의 이 진 트 리그 다음 에 우 리 는 이 진 트 리 의 생 성, 소각, 옮 겨 다 니 기, 그리고 각종 이 진 트 리 의 성질 에 착안 하여 (높이, 노드 개수, 균형 여부 등 특성) 이 진 트 리 의 일부 응용 을 소개 해 야 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.