作者:鄙人fisher_779 | 来源:互联网 | 2023-10-10 18:07
有一棵树,其结点的值为互不相同的正整数,这棵树用孩子兄弟表示法做存储结构,现输入一个正整数x。若树中存在值为x的结点,则输出该结点第2个孩子的值,若树中不存在值为x的结点,则输出:“树中无这个结点”,
有一棵树,其结点的值为互不相同的正整数,这棵树用孩子兄弟表示法做存储结构,现输入一个正整数x。若树中存在值为x的结点,则输出该结点第2个孩子的值,若树中不存在值为x的结点,则输出:“树中无这个结点”,若树中值为x的结点没有孩子,或只有一个孩子,则输出:“没有第2个孩子”。
输入描述: 第一行是若干个正整数或“-1”组成的序列,是该树对应的二叉树(将该树转化成的二叉树)的扩展二叉树前序遍历序列,其中的“-1”表示空。第二行,一个正整数,表示x的值。
输出描述:树中值为x的结点第2个孩子的值。若树中不存在值为x的结点,则输出:“树中无这个结点”,若树中值为x的结点没有孩子,或只有一个孩子,则输出:“没有第2个孩子”
这是代码的一部分,主要函数没实现:
#include
int k=0; //k为树中有无x的标志
struct BiNode{ // 二叉树的结点结构
int data;
BiNode *lchild,*rchild;
};
BiNode* Creat_a_BiTree() //构建一棵二叉树
{
BiNode *a;
int ch;
scanf("%d",&ch);
if(ch==-1)a=NULL;
else
{
a=new BiNode;
a->data=ch;
a->lchild=Creat_a_BiTree();
a->rchild=Creat_a_BiTree();
}
return a;
}
void Print_x_2(BiNode *T,int x)//求树中值为x的结点的第二个孩子,有 //输出内容后,要换行
{
}// end of Print_x_2()
void main()
{
BiNode *h;
int x;
h=Creat_a_BiTree();
scanf("%d",&x);
if (h!=NULL) Print_x_2(h,x);
if (k==0) printf("%s\n","树中无这个结点");
}
1 个解决方案