⑴ 按满二叉树方式建立 (补充)
在此补充按满二叉树的方式对结点进行编号建立链式二叉树。对每个结点,输入i、ch。i : 结点编号,按从小到大的顺序输入;ch : 结点内容,假设是字符。在建立过程中借助一个一维数组S[n] ,编号为i的结点保存在S[i]中。
#define MAX_NODE 50
typedef struct BTNode
{
char data ;
struct BTNode *Lchild , *Rchild ;
}BTNode ;
BTNode *Create_BTree(void)
/* 建立链式二叉树,返回指向根结点的指针变量 */
{
BTNode *T , *p , *s[MAX_NODE] ;
char ch ;
int i , j ;
while (1)
{
scanf(“%d”, &i) ;
if (i==0) break ; /* 以编号0作为输入结束 */
else
{
ch=getchar() ;
p=(BTNode *)malloc(sizeof(BTNode)) ;
p–>data=ch ;
p–>Lchild=p–>Rchild=NULL ;
s[i]=p ;
if (i==1) T=p ;
else
{
j=i/2 ; /* j是i的双亲结点编号 */
if (i%2==0) s[j]->Lchild=p ;
else s[j]->Rchild=p ;
}
}
}
return(T) ;
}
⑵ 按先序遍历方式建立
#define NULLKY ‘?’
#define MAX_NODE 50
typedef struct BTNode
{
char data ;
struct BTNode *Lchild , *Rchild ;
}BTNode ;
BTNode *Preorder_Create_BTree(BTNode *T)
/* 建立链式二叉树,返回指向根结点的指针变量 */
{
char ch ;
ch=getchar() ;
if (ch==NULLKY)
{
T=NULL;
return(T) ;
}
else
{
T=(BTNode *)malloc(sizeof(BTNode)) ;
T–>data=ch ;
Preorder_Create_BTree(T->Lchild) ;
Preorder_Create_BTree(T->Rchild) ;
return(T) ;
}
}
本文介绍了两种构建二叉树的方法:一是依据满二叉树方式进行编号建立链式二叉树,二是通过先序遍历输入节点信息来创建二叉树。这两种方法分别适用于不同场景,为读者提供了实用的二叉树构建思路。
854

被折叠的 条评论
为什么被折叠?



