二叉树的创建与遍历(递归)

xiaoxiao2021-02-28  78

#include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef struct BitNode { ElemType data; struct BitNode *lchild, *rchild; }BitNode,*BitTree; CreateBitTree(BitTree *T) { ElemType c; scanf("%c",&c); if(' '==c) { *T = NULL; } else { *T = (BitTree)malloc(sizeof(BitNode)); (*T)->data = c; CreateBitTree(&(*T)->lchild); CreateBitTree(&(*T)->rchild); } } PreOrderTraverse(BitTree T,int level) { if(T) { PreOrderTraverse(T->lchild,level+1); PreOrderTraverse(T->rchild,level+1); printf("元素 %c 在第%d层\n",T->data,level); } } MidOrderTraverse(BitTree T,int level) { if(T) { MidOrderTraverse(T->lchild,level+1); printf("元素 %c 在第%d层\n",T->data,level); MidOrderTraverse(T->rchild,level+1); } } PostOrderTraverse(BitTree T,int level) { if(T) { PostOrderTraverse(T->lchild,level+1); PostOrderTraverse(T->rchild,level+1); printf("元素 %c 在第%d层\n",T->data,level); } } int main() { int level = 1; BitTree T; CreateBitTree(&T); //PreOrderTraverse(T,level); //MidOrderTraverse(T,level); PostOrderTraverse(T,level); return 0; }
转载请注明原文地址: https://www.6miu.com/read-77824.html

最新回复(0)