我家门前有两棵树,一棵是二叉树,另一棵也是二叉树 QAQ
先看一棵树
前序遍历:ABDECFG
中序遍历:DBEAFCG
后序遍历:DEBFGCA
层序遍历:ABCDEFG
本文只实现非递归遍历,并且利用C++提供的栈和队完成遍历
树节点的定义:
typedef int DataType;
struct TreeNode
{
struct TreeNode *left;
struct TreeNode *right;
DataType val;
}TreeNode;
前序遍历
先上代码:
#include <iostream>
#include <stack>
void PreOrder(TreeNode *root)
{
std::stack<TreeNode*> s;
TreeNode *cur, *top;
cur = root;
while(cur != NULL || !s.empty())
{
while(cur != NULL)
{
std::cout << cur->val << " ";
s.push(cur);
cur = cur->left;
}
top = s.top();
s.