二叉树--遍历(c语言简单实现)

 1 #include<stdlib.h>

 2 typedef char ele;

 3 

 4 typedef struct BiTNode{

 5     ele e;

 6     struct BiTNode *lnode,*rnode;

 7 }bitNode,*bitree;

 8 

 9 void visit(ele e);

10 

11 /*

12  * 先序遍历

13  *     (1)访问根节点;

14  *     (2)先序遍历左子树

15  *     (3)先序遍历右子树

16  *

17  * */

18 void PreOrderTraverse(bitree t){

19     if(t){

20         visit(t->e);

21         PreOrderTraverse(t->lnode);

22         PreOrderTraverse(t->rnode);

23     }

24 }

25 

26 /*

27  * 中序遍历

28  *     (1)先序遍历左子树

29  *     (2)访问根节点;

30  *     (3)先序遍历右子树

31  *

32  * */

33 void InOrderOrderTraverse(bitree t){

34     if(t){

35         InOrderOrderTraverse(t->lnode);

36         visit(t->e);

37         InOrderOrderTraverse(t->rnode);

38     }

39 }

40 

41 /*

42  * 后序序遍历

43  *     (1)先序遍历左子树

44  *     (2)先序遍历右子树

45  *     (3)访问根节点;

46  *

47  * */

48 void PosOrderOrderTraverse(bitree t){

49     if(t){

50         PosOrderOrderTraverse(t->lnode);

51         PosOrderOrderTraverse(t->rnode);

52         visit(t->e);

53     }

54 }

55 

56 /*

57  *

58  * 先序生成一颗二叉树

59  *

60  * */

61 void createBiTree(bitree *t){

62     char c;

63     scanf("%c",&c);

64     if(c==' ')*t=NULL;

65     else{

66         *t=(bitNode *)malloc(sizeof(bitNode));

67         (*t)->e=c;

68         createBiTree(&((*t)->lnode));

69         createBiTree(&((*t)->rnode));

70     }

71 }

 

你可能感兴趣的:(C语言)