Language: C++

#include<iostream>
#define MAX 10000
#define NIL -1
struct Node{int parent,left,right;};
Node T[MAX[;
int n,D[MAX],H[MAX];
void setDepth(int u,int d){
if(u==NIL)return;
D[u]=d;
setDepth(T[u].left,d+1);
setDepth(T[u].right,d+1);
}
int setHeight(int u){
int h1=0,h2=0;
if(T[u].left!=NIL){
h1=setHeight(T[u].left)+1;
if(T[u].right!=NIL){
h2=setHeight(T[u].right)+1;
return H[u]=(h1>h2? h1:h2);
}
int getSibling(int u){
if(T[u].parent==NIL)return NIL;
if(T[T[u].parent].left!=u&&T[T[u].parent].left!=NIL)
return T[T[u].parent].left;
if(T[T[u].parent].right!=u&&T[T[u].parent].right!=NIL)
return T[T[u].parent].right;
return NIL;
}
void print(int u){
printf("node%d: ",u);
printf("parent = %d, ",T[u].parent);
printf("sibling = %d, ",getSibling(u));
int deg=0;
if(T[u].left!=NIL)deg++;
if(T[u].right!=NIL)deg++;
printf("degree = %d, ",deg);
printf("depth = %d, ",D[u]);
printf("height = %d, ",H[u]);
if(T[u].parent==NIL){
printf("root\n");
}else if (T[u].left==NIL&&&T[u].right==NIL){
printf("leaf\n");
}else{
printf("internal node\n");
}
}
int main(){
int v,l,,r,root=0;
scanf("%d",&n);
for(int i=0;i<n;i++)T[i].parent=NIL;
for(int i=0;i<n;i++){
scanf("%d %d %d",&v,&l,&r);
T[v].left=l;
T[v].right=r;
if(l!=NIL)T[l].parent=v;
if(r!=NIL)T[r].parent=v;
}
for(int i=0;i<n;i++)if(T[i].parent==NIL)root=i;
setDepth(root,0);
setHeight(root);
for(int i=0;i<n;i++)print(i);
return 0;
}


Compiler output:
a.cc:5:12: error: expected primary-expression before ';' token
    5 | Node T[MAX[;
      |            ^
a.cc:5:12: error: expected ']' before ';' token
    5 | Node T[MAX[;
      |            ^
      |            ]
a.cc:5:12: error: expected ']' before ';' token
    5 | Node T[MAX[;
      |            ^
      |            ]
a.cc: In function 'void setDepth(int, int)':
a.cc:10:10: error: 'T' was not declared in this scope
   10 | setDepth(T[u].left,d+1);
      |          ^
a.cc: In function 'int setHeight(int)':
a.cc:15:4: error: 'T' was not declared in this scope
   15 | if(T[u].left!=NIL){
      |    ^
a.cc:21:22: error: a function-definition is not allowed here before '{' token
   21 | int getSibling(int u){
      |                      ^
a.cc:29:18: error: a function-definition is not allowed here before '{' token
   29 | void print(int u){
      |                  ^
a.cc:47:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
   47 | int main(){
      |         ^~
a.cc:47:9: note: remove parentheses to default-initialize a variable
   47 | int main(){
      |         ^~
      |         --
a.cc:47:9: note: or replace parentheses with braces to value-initialize a variable
a.cc:47:11: error: a function-definition is not allowed here before '{' token
   47 | int main(){
      |           ^
a.cc:63:2: error: expected '}' at end of input
   63 | }
      |  ^
a.cc:15:19: note: to match this '{'
   15 | if(T[u].left!=NIL){
      |                   ^
a.cc:63:2: error: expected '}' at end of input
   63 | }
      |  ^
a.cc:13:21: note: to match this '{'
   13 | int setHeight(int u){
      |                     ^
a.cc:14:10: warning: control reaches end of non-void function [-Wreturn-type]
   14 | int h1=0,h2=0;
      |          ^~