题目描述
样例
CPP版本
cpp
#include <iostream>
#include <vector>
using namespace std;
int res = 0;
int height(vector<vector<int>>& nums, int root) {
if (root == -1) {
return 0;
}
return max(height(nums, nums[root - 1][0]), height(nums, nums[root - 1][1])) + 1;
}
bool isFullTree(vector<vector<int>>& nums, int root) {
if (root == -1) {
return true;
}
if (isFullTree(nums, nums[root - 1][0]) && isFullTree(nums, nums[root - 1][1]) && height(nums, nums[root - 1][0]) == height(nums, nums[root - 1][1])) {
res ++;
return true;
} else {
return false;
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> nums(n, vector<int>(2));
for (int i = 0; i < n; i ++) {
cin >> nums[i][0] >> nums[i][1];
}
isFullTree(nums, 1);
cout << res << endl;
return 0;
}
算法1
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) O(n2)
blablabla
时间复杂度
参考文献
C++ 代码
blablabla