//tree.h
#pragma once
template<typename A>
class Tree
{
public:
typedef struct node {
A data;
struct node* left, * right;
}node,*tree;
tree T,stack[100];
tree p,q;
tree queue[100];
void build_tree(tree &T);
void output(A ch);
void output_level(A ch, int level);
void preorder1_tree(tree T);
void inorder1_tree(tree T);
void postorder1_tree(tree T);
void preorder2_tree(tree T);
void inorder2_tree(tree T);
void postorder2_tree(tree T);
void levelorder_tree(tree T);
};
template<typename A>
void Tree<A>::build_tree(tree &T) {
A ch;
cin >> ch;
if (ch == '#'){
T=NULL;
}
else {
T = new node[sizeof(node)];
T->data = ch;
build_tree(T->left);
build_tree(T->right);
}
}
template<typename A>
void Tree<A>::output(A ch)
{
cout << ch << ' ';
}
template<typename A>
void Tree<A>::output_level(A ch, int level) {
cout << ch << "on" << level << "level" << ' ';
}
template<typename A>
void Tree<A>::preorder1_tree(tree T) {
if (T != NULL) {
cout << T->data << endl;
preorder1_tree(T->left);
preorder1_tree(T->right);
}
}
template<typename A>
void Tree<A>::inorder1_tree(tree T)
{
if (T != NULL) {
inorder1_tree(T->left);
cout << T->data << endl;
inorder1_tree(T->right);
}
}
template<typename A>
void Tree<A>::postorder1_tree(tree T)
{
if (T != NULL) {
postorder1_tree(T->left);
postorder1_tree(T->right);
cout << T->data << endl;
}
}
template<typename A>
void Tree<A>::preorder2_tree(tree T)
{
}
template<typename A>
void Tree<A>::inorder2_tree(tree T) {
int top = -1;
p = T;
while (p || top != -1)
{
if (p)
{
stack[++top] = p;
p = p->left;
}
else {
q=stack[top--];
cout << q->data;
p = q->right;
}
}
}
template<typename A>
void Tree<A>::postorder2_tree(tree T) {
}
template<typename A>
void Tree<A>::levelorder_tree(tree T) {
int front = 0;
int rear = 0;
queue[rear] = T;
rear=(rear+1)%100;
while (front!=rear) {
p = queue[front];
front = (front + 1) % 100;
cout << p->data << " ";
if (p->left != NULL) {
queue[rear] = p->left;
rear = (rear + 1) % 100;
}
if (p->right != NULL) {
queue[rear] = p->right;
rear = (rear + 1) % 100;
}
}
}
//main.cpp
#include<iostream>
using namespace std;
#include"tree.h"
int main()
{
Tree<char> obj1;
obj1.build_tree(obj1.T);
obj1.inorder1_tree(obj1.T);
return 0;
}
mytree.cpp
最新推荐文章于 2024-05-01 22:04:48 发布