题目描述
现在给了你一棵n个点构成的二叉树,每个点有一个唯一的标号,分别为1,...,n。
方式为告诉你每个节点的左子节点和右子节点的编号,如果不存在左子节点或右子节点,则给出的标号为-1。
现在你要输出一个数,为这个二叉树的根节点的标号。
输入格式
第一行为二叉树的节点数n(n≤10000)。
后面n行,每行包括3个整数:第一个整数为节点标号,后两个整数分别为其左右儿子的标号。
空节点用-1表示。
输出格式
输出一个数,表示这棵二叉树根节点的标号。
样例输入
3
1 2 3
2 -1 -1
3 -1 -1
样例输出
1
问题提示
1
问题提示
不保证每行的第一个数按升序排列,所有节点的编号一定在1~n之间且互不重复。
代码:
#include
using namespace std;
struct tree{
int l,r,p;
};
tree vis[10005];
int main()
{
int n,x,y,z;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y>>z;
vis[x].l =y;
vis[x].r =z;
if(y!=-1) vis[y].p=x;
if(z!=-1) vis[z].p=x;
}
for(int i=1;i<=n;i++)
{
if(vis[i].p==0)
{
cout< break;
}
}
return 0;
}



