标签:
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