二叉树的遍历(递归实现)
二叉树的遍历(循环迭代实现)
普通树的遍历
准备工作:预处理命令 和 栈操作实现:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef char elemtype;
typedef struct tNode * tree;
typedef struct tNode{
elemtype elem;
tree left;
tree right;
}tNode;
//用于遍历的栈结构
typedef struct node{
elemtype data;
struct node * next;
}LinkStackNode;
typedef LinkStackNode * LinkStack;
int isEmpty_Stack(LinkStack top)
{
if (top == NULL)
return TRUE;
else
return FALSE;
}
//栈的Push操作
void Push(LinkStack *top, elemtype x)
{
LinkStack tmp;
tmp = (LinkStackNode *)malloc(sizeof(LinkStackNode));
tmp -> data = x;
tmp -> next = *top;
*top = tmp;
}
// 栈的Pop操作
int Pop(LinkStack *top)
{
elemtype x;
if(top == NULL)