#include <iostream>
using namespace std;
int count = 0;
class BinTree{
public:
BinTree(int v){
value = v;
left = NULL;
right = NULL;
}
int value;
BinTree* left;
BinTree* right;
};
class Node{
public:
Node(BinTree* v) {
value = v;
next = NULL;
}
BinTree* value;
Node* next;
};
class Queue{
public:
Node* head;
Node* tail;
Queue(){
head = NULL;
tail = NULL;
}
void enque(BinTree* value) {
Node* n = new Node(value);
if(head == NULL) {
// cout<<"aa";
head = tail = n;
return;
}
tail->next = n;
tail = n;
}
BinTree* deque() {
if(head == NULL)
return NULL;
Node* temp = head;
head = head->next;
BinTree* ret = temp->value;
delete temp;
if(head == NULL)
tail = NULL;
return ret;
}
bool isEmpty(){
if(head == NULL)
return true;
return false;
}
};
void createTree(BinTree* &tree,int depth,int cur) {
if(cur < depth) {
tree = new BinTree(count);
count++;
createTree(tree->left,depth,cur+1);
createTree(tree->right,depth,cur+1);
} else {
return;
}
}
void BST(BinTree* tree) {
Queue* q = new Queue();
cout<<tree->value<<endl;
if(tree->left != NULL)
q->enque(tree->left);
if(tree->right != NULL)
q->enque(tree->right);
while(!q->isEmpty()) {
BinTree* temp = q->deque();
cout<<temp->value<<endl;
if(temp->left != NULL)
q->enque(temp->left);
if(temp->right != NULL)
q->enque(temp->right);
}
}
int main() {
BinTree* tree;
createTree(tree,5,0);
// cout<<tree->left->right->value;
BST(tree);
}
广度遍历二叉树
最新推荐文章于 2021-05-16 21:26:06 发布