#include<iostream>
#include<queue>
#include<stack>
using namespace std;
template<typename T>
struct BinaryTreeNode
{
BinaryTreeNode(T data)
: _data(data)
, _pLeft(NULL)
, _pRight(NULL)
{}
T _data;
BinaryTreeNode<T>* _pLeft;
BinaryTreeNode<T>* _pRight;
};
template<typename T>
class BinaryTree
{
public:
BinaryTree() :_proot(NULL){}
BinaryTree(BinaryTreeNode<T>* _root, size_t size, T *arr)
{
size_t index = 0;
_CreateTree(_root, arr, size, index);
_proot = _root;
}
BinaryTree(const BinaryTree<T> &TREE)
{
_proot=copycons(TREE._proot);
}
BinaryTree<T>& operator=(BinaryTree<T>&tree)
{
destroy(_proot);
_proot = copycons(tree._proot);
return *this;
}
~BinaryTree()
{
destroy(_proot);
}
public:
//递归先序遍历
void TREEPreOrder(BinaryTreeNode<T>* proot)
{
if (proot != NULL)
{
cout << proot->_data;
TREEPreOrder(proot->_pLeft);
TREEPreOrder(proot->_pRight);
}
}
//递归先序遍历
void PreOrder()
{
TREEPreOrder(_proot);
}
//递归中序遍历
void TreeMidOrder(BinaryTreeNode<T>* proot)
{
if (proot != NULL)
{
TreeMidOrder(proot->_pLeft);
cout << proot->_data;
TreeMidOrder(proot->_pRight);
}
}
//递归中序遍历
C++二叉树之构造拷贝赋值,递归和非递归的前序遍历,中序遍历和后序遍历,以及层序遍历
最新推荐文章于 2023-10-17 22:32:51 发布
这篇博客详细探讨了C++中二叉树的前序、中序、后序遍历,包括递归和非递归两种方法,以及层序遍历的实现技巧。通过实例代码解析,帮助读者深入理解各种遍历策略。
摘要由CSDN通过智能技术生成