|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  | #include <stdio.h> #include <stdlib.h>
 
 
 typedef char ElemType;
 
 
 typedef struct BiTNode
 {
 char data;
 struct BiTNode *lchild, *rchild;
 } BiTNode, *BiTree;
 
 
 // 创建一棵二叉树,约定用户遵照前序遍历的方式输入数据
 CreateBiTree(BiTree *T)
 {
 char c;
 
 
 scanf("%c", &c);
 if( ' ' == c )
 {
 *T = NULL;
 }
 else
 {
 *T = (BiTNode *)malloc(sizeof(BiTNode));
 (*T)->data = c;
 CreateBiTree(&(*T)->lchild);
 CreateBiTree(&(*T)->rchild);
 }
 }
 
 
 // 访问二叉树结点的具体操作,你想干嘛?!
 visit(char c, int level)
 {
 printf("%c 位于第 %d 层\n", c, level);
 }
 
 
 // 前序遍历二叉树
 PreOrderTraverse(BiTree T, int level)
 {
 if( T )
 {
 visit(T->data, level);
 PreOrderTraverse(T->lchild, level+1);
 PreOrderTraverse(T->rchild, level+1);
 }
 }
 
 
 int main()
 {
 int level = 1;
 BiTree T = NULL;
 
 
 CreateBiTree(&T);
 PreOrderTraverse(T, level);
 
 
 return 0;
 }
 红色的这个是在视频里看到的,可以建立也可以遍历出结果
 下面这个绿色的是我自己写的  基本都是一样的  只不过我用的是cin cout问什么就遍历不出结果  还有递归建立的时候我感觉没有递归出口会无穷的建立下去 那上面这个红色为什么就可以成功运行?  求助
 #include<iostream>
 #include<malloc.h>
 using namespace std;
 
 
 typedef char Elemtype;
 
 
 typedef struct BiTNode                                                        //建立二叉链表存储结构
 {
 Elemtype data;                                                                //数据域
 struct BiTNode *lchild,*rchild;                                //左孩子右孩子
 }BiTNode,*BiTree;                               //BiTree为指向这个结构体的指针
 
 
 //按照前序遍历的顺序来创建二叉树
 CreatBiTree(BiTree *T)
 {
 char c;
 cin>>c;
 if(c == ' ')
 {
 *T = NULL;
 }
 else
 {
 (*T)=(BiTNode *)malloc(sizeof(BiTNode));
 (*T)->data=c;
 CreatBiTree(&(*T)->lchild);
 CreatBiTree(&(*T)->rchild);
 }
 }
 
 
 //前序遍历二叉树,中序后序只需要调换访问顺序
 PreTravel(BiTree T)
 {
 if( T )
 {
 cout<<T->data;
 PreTravel(T->lchild);
 PreTravel(T->rchild);
 }
 }
 
 
 int main()
 {
 BiTree T = NULL;
 CreatBiTree(&T);
 PreTravel(T);
 
 
 return 0;
 }
 | 
 
 | 
 |