二叉树-数据结构.docVIP

  • 1
  • 0
  • 约1.66千字
  • 约 3页
  • 2018-03-09 发布于河南
  • 举报
二叉树-数据结构

#includestdio.h #includemalloc.h #define NULL 0 #define MAXSIZE 100 #define TRUE 1 #define FALSE 0 typedef char TElemType; typedef struct BTNode { TElemType data; BTNode *lchild,*rchild; }BTNode,*BiTree; typedef struct { BiTree data[MAXSIZE]; int top; }Stack; void InitStack(Stack S) { S.top = 0; } int StackEmpty(Stack S) { if(S.top==0)return 1; else return 0; } void Push(Stack S,BiTree e) { if(S.topMAXSIZE)return; S.data[S.top++] = e; } BiTree Pop(Stack S) { if(StackEmpty(S))return 0; return S.data[--S.top]; } void CreatBiTree(BiTree T) { TElemType ch; scanf(%c,ch); if(ch==#)T = NULL; else { T = (BiTree)malloc(sizeof(BTNode)); T-data = ch; CreatBiTree(T-lchild); CreatBiTree(T-rchild); } } void PreOrderTraverse(BiTree T) { if(T) { printf(%6c,T-data); PreOrderTraverse(T-lchild); PreOrderTraverse(T-rchild); } } void InOrderTraverse(BiTree T) { if(T) { InOrderTraverse(T-lchild); printf(%6c,T-data); InOrderTraverse(T-rchild); } } void PostOrderTraverse(BiTree T) { if(T) { PostOrderTraverse(T-lchild); PostOrderTraverse(T-rchild); printf(%6c,T-data); } } void InOrderTraverse1(BiTree T) { BiTree p; p = T; Stack S; InitStack(S); while(!StackEmpty(S)||p) if(p){Push(S,p);p = p-lchild;} else { p = Pop(S); printf(%6c,p-data); p = p-rchild; } } void main() { BiTree T; printf(请输入字符建立二叉树(空格用#表示):\n); CreatBiTree(T); printf(先序遍历结果为:\n); PreOrderTraverse(T); printf(\n中序遍历结果为(递归):\n); InOrderTraverse(T); printf(\n中序遍历结果为(非递归):\n); InOrderTraverse(T); printf(\n后序遍历结果为:\n); PostOrderTraverse(T); printf(\n); }

文档评论(0)

1亿VIP精品文档

相关文档