二叉树的三种递归遍历算法和中序遍历的非递归算法
2021-06-04 21:02
标签:char 递归遍历 nod tno 遍历 tor bool lse printf 二叉树本身是一种递归的数据类型,二叉树的许多操作离不开递归。非递归遍历包括结点入栈,先访问右子树,再访问根节点,访问左子树,先序和后序的非递归算法有待调试。 附上栈的一些操作 二叉树的三种递归遍历算法和中序遍历的非递归算法 标签:char 递归遍历 nod tno 遍历 tor bool lse printf 原文地址:https://www.cnblogs.com/tzp-empty-hya/p/14645397.htmlinclude
#include
void InitStack(PStack S, int size)
{
if (!S) exit(1);
if (size > 0) S->base = (ElemType*)malloc(sizeof(ElemType) * size);
if (!S->base)exit(1);
S->SatckSize = size;
S->top = 0;
}
bool Pop(PStack S, ElemType* PopItem)
{
if (S->top top--;
*PopItem = *(S->base + S->top);
return true;
}
bool Push(PStack S, ElemType PushItem)
{
if (S->top >= S->SatckSize)
{
printf("Stack is full\n"); return false;
}
*(S->base + S->top) = PushItem;
S->top++;
return true;
}
ElemType GetTop(PStack S, ElemType* TopItem)
{
if (S->top base + S->top - 1);
return *TopItem;
}
bool IsEmpty(PStack S)
{
if (S->top == 0) return true;
else return false;
}