left=leaf(r->leftchild); right=leaf(r->rightchild); return left + right;
}
/* if (r->rightchild == NULL) count++; else
{ leaf(r->leftchild); leaf(r->rightchild); }*/
}
//return count;
}
void bintreelink::levelorder(bintreenode*r) { linkqueue*queue=NULL; bintreenode*p=NULL; if (r != NULL) queue->enquene(p->data); while (!queue->isempty())
{ queue->delquene(p->data); cout<
if (p->rightchild != NULL) { levelorder(p->rightchild); }
}
}
Linkqueue.h
#pragma once #include
protected:
node*front, *rear; public:
linkqueue(); ~linkqueue(); bool isempty(); void delquene(char e);
void enquene(char e);
};
Linkqueue.cpp
#include \
linkqueue::linkqueue() { front = rear = new node;
}
bool linkqueue::isempty() {
if (front == rear) return 0; else
return 1; }
void linkqueue::delquene(char e) { if (!isempty()) { node*p = front->next; e = p->data;
front->next = p->next; if (rear == p)
rear = front; delete p;
}
}
void linkqueue::enquene(char e) { node*p;
p = new node(e, NULL); if (p) {
rear->next = p;
}
rear = rear->next; } }