#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*
1 创建树
2 遍历
我们可以先迭代遍历,然后再非迭代遍历
2.1 先序遍历
2.2 中序遍历
2.3 后续遍历
2.4 层次遍历
3 搜索树
4 删除结点
*/
typedef char ElementType;
typedef struct TNode *Position; /* 结构体指针 */
typedef Position BinTree; /* 二叉树类型 */
struct TNode{ /* 树结点定义 */
ElementType Data; /* 结点数据 */
BinTree Left; /* 指向左子树 */
BinTree Right; /* 指向右子树 */
}TNode;
void CreateBinaryTree ( BinTree *T ) {
ElementType ch;
scanf("%c",&ch);
if (ch == '#')
*T = NULL;
else {
*T = (BinTree)malloc(sizeof(TNode));
(*T)->Data = ch;
CreateBinaryTree(&((*T)->Left));
CreateBinaryTree(&((*T)->Right));
}
}
void PreOrderTraversal ( BinTree BT ) {
if ( BT ) {
printf("%c", BT->Data);
PreOrderTraversal( BT->Left );
PreOrderTraversal( BT->Right );
}
}
void InOrderTraversal ( BinTree BT ) {
if ( BT ) {
PreOrderTraversal( BT->Left );
printf("%c", BT->Data);
PreOrderTraversal( BT->Right );
}
}
void PostOrderTraversal ( BinTree BT ) {
if ( BT ) {
PostOrderTraversal( BT->Left );
PostOrderTraversal( BT->Right );
printf("%c", BT->Data);
}
}
int main() {
BinTree myTree;
printf("Create your Binary Tree:\n");
CreateBinaryTree(&myTree);
printf("\n PreOrder:");
PreOrderTraversal(myTree);
printf("\n InOrder:");
InOrderTraversal(myTree);
printf("\n PostOrder:");
PostOrderTraversal(myTree);
printf("\n");
return 0;
}
二叉树遍历--迭代
最新推荐文章于 2024-07-12 10:33:55 发布