指针建树
基本知识:指针,结构体,递归;
结构体:左儿子,右儿子,值
实现方法
1.定义一个结构体指针
2.进行以下循环:
a.输入节点值(以char型举例)
b.若为‘#’,此时为叶节点,返回
c.若不为‘#’,则用new为指针声明空间,
并从a开始对左,右儿子进行递归操作
#include <iostream>
using namespace std;
struct BiTNode{
char data;
struct BiTNode *lchild, *rchild;//左右孩子
};
BiTNode *T; //T为结构体指针
void CreateBiTree(BiTNode* &T){ //* &t //传入一个指针的地址
char ch;
if((ch=getchar())=='#')T=NULL;
else{
cout<<ch<<' ';
T=new BiTNode;//产生新的子树
T->data=ch;
CreateBiTree(T->lchild);//递归创建左子树
CreateBiTree(T->rchild);//递归创建右子树
}
}
void search(BiTNode* T){//* T 并不改变原值,可以不用传址
if(T){
search(T->lchild);
cout<<T->data;
search(T->rchild);
}
}
int main(int argc, char** argv){
CreateBiTree(T);
search(T);
}