#1933. 认识树-课堂案例2

认识树-课堂案例2

题目描述

指定下图所示的树结构,圆圈内是树结点的值。请你编程保存这个树的信息,然后输出b、c、f、h结点的子结点(的值)。 输出4行,每个结点的子结点占一行。有多个子结点从左到右排列,之间以空格隔开;没有子节点的输出“LEAF”。 (树的图见教案和PPT) 【输入样例】无 【输出样例】 d e f g h LEAF #include using namespace std; #define maxn 10 struct tree_node{ int son[maxn]; //孩子结点数组 char data; //节点保存的数值 }; tree_node tree[maxn]; //树 int main(){ //保存树结构 tree[1].data='a'; tree[1].son[1] = 2; tree[1].son[2] = 4; tree[2].data='b'; tree[2].son[1] = 3; tree[3].data='d'; tree[4].data='c'; tree[4].son[1] = 5; tree[4].son[2] = 6; tree[4].son[3] = 8; tree[5].data='e'; tree[6].data='f'; tree[6].son[1] = 7; tree[7].data='h'; tree[8].data='g'; //输出b、c、f、h结点的子结点 (的值) for(int i=1;i<maxn;i++){ if(tree[i].data == 'b' ||tree[i].data == 'c' ||tree[i].data == 'f'||tree[i].data == 'h'){ tree_node n = tree[i]; bool flag = false; for(int j=1;j<maxn;j++){ if(n.son[j]!=0){ //子节点存在 cout << tree[n.son[j]].data << " ";//输出子结点的值 flag = true; } } if(!flag)//不存在任何子节点的情况 cout<<"LEAF"; cout << endl; } } return 0; }

输入格式

无

输出格式

(见样例)

样例

输入样例 1

无

输出样例 1

d
e f g
h
LEAF