不存在的结点用-1表示。
#include <iostream>
using namespace std;
struct node {
int p, l, r;
};
node N[100];
int d[100], h[100];
void depth(int u, int m) {
if (u == -1)
return;
d[u] = m;
depth(N[u].l, m + 1);
depth(N[u].r, m + 1);
}
int height(int u) {
int h1 = 0, h2 = 0;
if (N[u].l != -1) {
h1 = height(N[u].l) + 1;
}
if (N[u].r != -1) {
h1 = height(N[u].r) + 1;
}
return h[u] = max(h1, h2);
}
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
N[i].p = -1;
}
for (int i = 0; i < t; i++) {
int v, l, r;
cin >> v >> l >> r;
N[v].l = l;
N[v].r = r;
if (l != -1)
N[l].p = v;
if (r != -1)
N[r].p = v;
}
int root;
for (int i = 0; i < t; i++)
if (N[i].p == -1)
root = i;
depth(root, 0);
height(root);
for (int i = 0; i < t; i++) {
cout << "depth:" << d[i] << endl;
cout << "height:" << h[i] << endl;
}
}