#1932. 认识树-课堂案例1
认识树-课堂案例1
题目描述
指定下图所示的树结构,圆圈内是树节点的值。请你编程保存这个树的信息,然后输出d、i、g结点的祖先结点(的值)。 输出3行,每个结点的祖先占一行,行内以空格隔开。 (树的图见教案和PPT) 【输入样例】无 【输出样例】 b a h f c a c a #include using namespace std; #define maxn 12 struct tree_node{ int parent; //父结点的编号 char data; //节点保存的数值 }; tree_node tree[maxn]; //树 int main(){ //保存树结构 tree[1].parent = 0; tree[1].data='a'; tree[2].parent = 1; tree[2].data='b'; tree[3].parent = 2; tree[3].data = 'd'; tree[4].parent = 1; tree[4].data = 'c'; tree[5].parent = 4; tree[5].data = 'e'; tree[6].parent = 4; tree[6].data = 'f'; tree[7].parent = 6; tree[7].data = 'h'; tree[8].parent = 7; tree[8].data = 'i'; tree[9].parent = 7; tree[9].data = 'j'; tree[10].parent = 4; tree[10].data = 'g'; //输出d、i、g结点的祖先结点 (的值) for(int i=1;i<=10;i++){ if(tree[i].data == 'd' ||tree[i].data == 'i'||tree[i].data == 'g'){ tree_node n = tree[i]; while(n.parent!=0) { n = tree[n.parent]; //祖先结点 cout << n.data << " ";//输出祖先结点的值 } cout << endl; } } return 0; }
输入格式
无
输出格式
(见样例)
样例
输入样例 1
无
输出样例 1
b a
h f c a
c a