一、先序遍历
1、递归算法
struct Tree
{
int date;
Tree* lchild;
Tree* rchild;
Tree(int x):date(x),lchild(nullptr),rchild(nullptr){}
};
void PreOrder(Tree* root)
{
if (root != nullptr)
{
cout << root->date << " ";
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
2、非递归算法
void PreOrder(Tree* root)
{
stack<Tree* > Stack;
if (root == nullptr)
return;
while (root != nullptr || !Stack.empty())
{
while (root != nullptr)
{
Stack.push(root);
cout << root->date << " ";
root = root->lchild;
}
root = Stack.top();
Stack.pop();
root = root->rchild;
}
}
二、中序遍历
1、递归算法
void InOrder(Tree* root)
{
if (root !