二叉树遍历
#include<stdio.h> #include<stdlib.h> //定义 typedef struct BiTNode{ int data; //数据域 struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //创建新节点 bool createNode(BiTree &T,int value){ T=(BiTNode *)malloc(sizeof(BiTNode)); //分配内存 if(T==NULL) //内存分配失败 return false; T->data=value; T->lchild=NULL; //新结点左孩子为空 T->rchild=NULL; //新结点右孩子为空 return true; } //访问结点 void visit(BiTree T){ int x=T->data; printf("%d ",x); } //先序遍历 void PreOrder(BiTree T){ if(T!=NULL){ visit(T); PreOrder(T->lchild); PreOrder(T->rchild); } } //中序遍历 void InOrder(BiTree T){ if(T!=NULL){ InOrder(T->lchild); visit(T); InOrder(T->rchild); } } //后序遍历 void PostOrder(BiTree T){ if(T!=NULL){ PostOrder(T->lchild); PostOrder(T->rchild); visit(T); } } int main(){ BiTree T; createNode(T, 1); createNode(T->lchild, 2); createNode(T->rchild, 3); createNode(T->lchild->lchild, 4); createNode(T->lchild->rchild, 5); // 先序遍历二叉树 printf("先序遍历结果为:"); PreOrder(T); // 中序遍历二叉树 printf("中序遍历结果为:"); InOrder(T); // 后序遍历二叉树 printf("后序遍历结果为:"); PostOrder(T); return 0; }