之前没有使用C++的STL,写二叉树的遍历的时候基本都是选择用递归来实现,了解了C++标准模板库中的stack和queue后,发现遍历二叉树更加简单了,下面给出实例代码,通过实际验证发现这种方法很简洁,很方便
#include <vector>
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
struct BitNode
{
int data;
BitNode *left, *right;
BitNode(int x) :data(x), left(0), right(0){}
};
//创建二叉树函数,实际上安装先序遍历的方式来创建的,如果没有左(右)子数,则输入0
void Create(BitNode *&root)
{
int key;
cin >> key;
if (key == 0)
root = NULL;
else
{
root = new BitNode(key);
Create(root->left);
Create(root->right);
}
}
void PreOrderTraversal(BitNode *root)
{
if (root)
{
cout << root->data << " ";
PreOrderTraversal(root->left);