解题思路:先用先序二叉树排序,存值。后用中序输出。
注意事项:要注意ABC##DE#G##F### 注意最后是三个空格 你可以用纸去画下二叉树就知道了。#代表空格。其他的别人都有解释。
注意理解下 这里二叉树的申请相当于一个大的指针里面有许多个小指针。这些小指针就是二叉树的节点。
大节点就是BiTree *T;
本来BiTree T和BiTNode *T是一样的但是BiTree *T这里的*T相当于大指针。否则也创建不了二叉树。二叉树其实也是自己脑子里假想的。不说了。
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct BiTrees { char data; struct BiTrees *lchild,*rchild; } BiTNode,*BiTree; void CreateBiTree(BiTree *T) { char ch; scanf("%c",&ch); if(ch==' ')//不能拿空值输入的是空格不是空值 { *T=NULL; return; } else { *T=(BiTNode*)malloc(sizeof(BiTNode)); if(!*T)exit(0);//申请内存失败 (*T)->data=ch; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } } void display(BiTNode *elem){ printf("%c ",elem->data); } void PreOrderTree(BiTree T){ if(T){ display(T); PreOrderTree(T->lchild); PreOrderTree(T->rchild); } return ; } void InOrderTree(BiTree T){ if(T){ InOrderTree(T->lchild); display(T); InOrderTree(T->rchild); } return ; } void LastOrderTree(BiTree T){ if(T){ LastOrderTree(T->lchild); LastOrderTree(T->rchild); display(T); } return ; } int main() { BiTree tree; CreateBiTree(&tree); // PreOrderTree(tree); printf("\n"); InOrderTree(tree); // printf("\n"); // LastOrderTree(tree); return 0; }
0.0分
4 人评分