📄 bitree.h
字号:
#include <iostream.h>
#include <stdlib.h>
#include "BiTreeNode.h"
template <class T> class BiTree
{
private:
BiTreeNode<T> *root;
void PreOrder(BiTreeNode<T> *t, void (*visit)(T item));
void InOrder(BiTreeNode<T> *t, void (*visit)(T item));
void PostOrder(BiTreeNode<T> *t, void (*visit)(T item));
public:
BiTree():root(NULL){};
~BiTree(){};
void MakeTree(const T &item, BiTree<T> &left, BiTree<T> &right);
void PreOrder(void (*visit)(T item));
void InOrder(void (*visit)(T item))
{InOrder(root, visit);}
void PostOrder(void (*visit)(T item))
{PostOrder(root, visit);}
};
template <class T>
void BiTree<T>::PreOrder(void(*visit)(T item))
{
PreOrder(root, visit);
}
template <class T>
void BiTree<T>::PreOrder(BiTreeNode<T> *t, void(*visit)(T item))
{
if(t != NULL)
{
visit(t->data);
PreOrder(t->Left(),visit);
PreOrder(t->Right(),visit);
}
}
template <class T>
void BiTree<T>::InOrder(BiTreeNode<T> *t, void (*visit)(T item))
{
if(t!=NULL)
{
InOrder(t->Left(),visit);
visit(t->data);
InOrder(t->Right(),visit);
}
}
template <class T>
void BiTree<T>::PostOrder(BiTreeNode<T> *t, void (*visit)(T item))
{
if(t!=NULL)
{
PostOrder(t->Left(),visit);
PostOrder(t->Right(),visit);
visit(t->data);
}
}
template <class T>
void BiTree<T>::MakeTree(const T &item, BiTree<T> &left, BiTree<T> &right)
{
root = new BiTreeNode<T>(item, left.root, right.root);
left.root = right.root = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -