建树操作
BTreeNode* BuildBTreeNode(){
struct BTreeNode* p;
int num;
cin>>num;
if(num==0)
p=nullptr;
else{
p=(struct BTreeNode*)malloc(sizeof(struct BTreeNode));
p->data = num;
p->l=BuildBTreeNode();
p->r=BuildBTreeNode();
}
return p;
}
四种遍历方法
void bfs(BTreeNode* node){
queue<BTreeNode*> q;
if(node){
q.push(node);
}
while(!q.empty()){
struct BTreeNode* p;
p=q.front();
q.pop();
cout<<p->data<<" ";
if(p->l)
q.push(p->l);
if(p->r)
q.push(p->r);
}
}
void preOrder(BTreeNode* node){
if(node){
cout<<node->data<<" ";
preOrder(node->l);
preOrder(node->r);
}
}
void inOrder(BTreeNode* node){
if(node){
inOrder(node->l);
cout<<node->data<<" ";
inOrder(node->r);
}
}
void lastOrder(BTreeNode* node){
if(node){
lastOrder(node->l);
lastOrder(node->r);
cout<<node->data<<" ";
}
}
查询叶子结点个数
int Leafnum(struct BTreeNode* node){
if(!node)
return 0;
else if((node->l == nullptr)&&(node->r==nullptr))
return 1;
else
return Leafnum(node->l)+Leafnum(node->r);
}
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
struct BTreeNode{
int data;
struct BTreeNode* l;
struct BTreeNode* r;
};
BTreeNode* BuildBTreeNode(){
struct BTreeNode* p;
int num;
cin>>num;
if(num==0)
p=nullptr;
else{
p=(struct BTreeNode*)malloc(sizeof(struct BTreeNode));
p->data = num;
p->l=BuildBTreeNode();
p->r=BuildBTreeNode();
}
return p;
}
void bfs(BTreeNode* node){
queue<BTreeNode*> q;
if(node){
q.push(node);
}
while(!q.empty()){
struct BTreeNode* p;
p=q.front();
q.pop();
cout<<p->data<<" ";
if(p->l)
q.push(p->l);
if(p->r)
q.push(p->r);
}
}
void preOrder(BTreeNode* node){
if(node){
cout<<node->data<<" ";
preOrder(node->l);
preOrder(node->r);
}
}
void inOrder(BTreeNode* node){
if(node){
inOrder(node->l);
cout<<node->data<<" ";
inOrder(node->r);
}
}
void lastOrder(BTreeNode* node){
if(node){
lastOrder(node->l);
lastOrder(node->r);
cout<<node->data<<" ";
}
}
int Leafnum(struct BTreeNode* node){
if(!node)
return 0;
else if((node->l == nullptr)&&(node->r==nullptr))
return 1;
else
return Leafnum(node->l)+Leafnum(node->r);
}
int main(int argc, const char * argv[]) {
struct BTreeNode* node = nullptr;
node = BuildBTreeNode();
bfs(node);
return 0;
}