1、先序遍历:先序遍历是先输出根节点,再输出左子树,最后输出右子树。上图的先序遍历结果就是:ABCDEF
2、中序遍历:中序遍历是先输出左子树,再输出根节点,最后输出右子树。上图的中序遍历结果就是:CBDAEF
3、后序遍历:后序遍历是先输出左子树,再输出右子树,最后输出根节点。上图的后序遍历结果就是:CDBFEA
|
|
#include <stdio.h>#include <stdlib.h>typedef
char TelemType;typedef
struct TNode{ TelemType data; struct
TNode *lchild,*rchild;} BitNode;//声明BitNode* createTree(void);void
preOrderTraverse(BitNode *);void
inOrderTraverse(BitNode *);void
lastOrderTraverse(BitNode *);int
main(int agrc,char
*argv[]){ BitNode *root=NULL; root=createTree();
printf("\n先序遍历二叉树:"); preOrderTraverse(root); printf("\n中序遍历二叉树:"); inOrderTraverse(root); printf("\n后序遍历二叉树:"); lastOrderTraverse(root); return
0;}//创建二叉树BitNode* createTree(void){ BitNode *b; TelemType ch; scanf("%c",&ch); if(ch==‘#‘){ b=NULL; }else{ b=(BitNode *)malloc(sizeof(BitNode)) b->data=ch; b->lchild=createTree(); b->rchild=createTree(); } return
b;}//先序遍历void
preOrderTraverse(BitNode *root){ if(root){ printf("%c",root->data); preOrderTraverse(root->lchild);
preOrderTraverse(root->rchild);
}}//中序遍历void
inOrderTraverse(BitNode *root){ if(root){ inOrderTraverse(root->lchild); printf("%c",root->data); inOrderTraverse(root->rchild); }}//后序遍历void
lastOrderTraverse(BitNode *root){ if(root){ lastOrderTraverse(root->lchild); lastOrderTraverse(root->rchild); printf("%c",root->data); }} |
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/bailuweishuang520/article/details/47321431