sicily 1156 Binary tree
前序输入二叉树
#include<iostream>
#include <memory.h>
using namespace std;
struct node
{
char content;
int left;
int rigth;
};
node tree[1001];
void pre_print(node);
int main()
{
bool isroot[1001]; //记录是否根节点
int id[1001]; //节点编号
int cases, n, left, right, k;
char c;
while (cin >> cases)
{
memset(isroot, true, sizeof(isroot));
k = 0;
for (int i = 0; i < cases; i++)
{
cin >> n >> c >> left >> right;
tree[n].left = left;
tree[n].rigth = right;
tree[n].content = c;
isroot[left] = isroot[right] = false; //左儿子和右儿子都不是根节点
id[k++] = n;
}
//查找根节点
for (int i = 0; i < k; i++)
if (isroot[id[i]])
{
pre_print(tree[id[i]]);
cout << endl;
break;
}
}
return 0;
}
void pre_print(node root)
{
cout << root.content;
if (root.left != 0)
pre_print(tree[root.left]);
if (root.rigth != 0)
pre_print(tree[root.rigth]);
}
浙公网安备 33010602011771号