题目大意
求一棵二叉树的叶子节点和,默认1为二叉树的根的编号
思路
从根节点一直往下搜,搜到叶子节点时计数。
#include <iostream>
using namespace std;
void set(int, int, int);
void Lp(int);
int sum;
struct Node {
int L_child;
int R_child;
} T[100001];
int main() {
int n, l, r;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> l >> r;
set(i, l, r);
}
Lp(1);
cout << sum;
}
void Lp(int rt) {
if (T[rt].L_child == 0 && T[rt].R_child == 0) {
sum += rt;
return;
}
Lp(T[rt].L_child);
Lp(T[rt].R_child);
}
void set(int rt, int l, int r) {
T[rt].L_child = l;
T[rt].R_child = r;
}