数据结构,二叉树
今天看了点数据结构二叉树方面的东西。
#include <iostream> #include<stdio.h> #include<stdlib.h> using namespace std; typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild; }BiTNode,*BiTree; void CreateBiTree(BiTree *T) { char c; cin.get(c); if(c == ' ') *T = NULL; else{ *T = (BiTNode *)malloc(sizeof(BiTNode)) ; (*T)->data = c; CreateBiTree(&((*T)->lchild)); CreateBiTree(&((*T)->rchild)); } } void visit(char c,int level) { if(c =='D') cout<<"D is at "<<level<<" level"<<endl; } void Verse(BiTree T,int level) { if(T) { visit(T->data,level); Verse(T->lchild,level+1); Verse(T->rchild,level+1); } } int main() { int level = 1; BiTree T = NULL; CreateBiTree(&T); Verse(T,level); cin.get(); return 0; }
我看的书是c语言版的,在电脑上实现的时候我顺便给他改成了c++的,结果出了点错。
所以写出了这个四不像的东西。。
这是一个存储字符的树。
输出字母D在第几层
这个树使用递归创建的,用空格来做结束条件,所以不能用C++中的cin,可以用cin.get(c)实现
申请一个堆空间我本来想用new可是没成功,待解决中。。