非递归遍历方式
非递归的重点是通过循环将遍历的思路描述出来。中序遍历较为简单,只需先找到树最左侧的结点,在返回打印即可。
非递归方式使用栈来进行遍历。
二叉树定义:
typedef struct node
{
int data;
struct node* lchild;
struct node* rchild;
}BTNode,*BTree;
中序遍历代码:
void Inordertrace1(BTree T)
{
if (T == NULL) return;
BTNode* p = T;
stack<BTNode*> s;
while (!s.empty() ||p)
{
while (p)//找到开始结点
{
s.push(p);
p = p->lchild;
}
if (!s.empty())//找右子树
{
p = s.top();
cout << ' '&