创建二叉树,完全看不懂

2025-01-07 19:49:54
推荐回答(4个)
回答1:

void CreatBiTree(BiTree &T)
{
//前序法创建二叉树
//前序遍历首先访问根结点然后遍历左子树,最后遍历右子树

char ch;
if((ch=getchar())=='\n') // 遍历结束判断
//为啥getchar()没有参数传进去啊?怎么取得当前节点的内容啊
T=NULL;
else
{
T=(BiTNode*)malloc(sizeof(BiTNode)); //分配空间作为根节点
if(!T) //没有分配成功就退出
exit(1);
T->data=ch; //把当前节点作为根节点
CreatBiTree(T->lchild);//递归遍历左子树
CreatBiTree(T->rchild);///递归遍历右子树
}
}
要是这都看不懂,我也没有办法了。

回答2:

递归法。

,,再创建右子树。

void CreatBiTree(BiTree &T)
{//前序法创建二叉树
char ch;
if((ch=getchar())=='\n') //叶子节点有关
T=NULL;
else
{
T=(BiTNode*)malloc(sizeof(BiTNode));
if(!T)
exit(1);
T->data=ch; //先设置当前节点的值
CreatBiTree(T->lchild); //创建当前节点的左子树
CreatBiTree(T->rchild); //创建当前节点的右子树
}
}

回答3:

你手画一个二叉树 然后按程序每一行执行,因为程序涉及到递归,最好把递归过程也画出来 怎样传值 怎么回退 就清楚了。用文字讲不太好讲 画个图一目了然。

回答4:

有递归的概念就比较好理解了。