满二叉树的定义:一个高度为h,并且含有2^h - 1个节点的二叉树称为满二叉树,下文称呼满二叉树为FBT。
根据满二叉树的高度与节点个数之间的关系,很容易判断一棵树是否为FBT,只需要求树其树高和节点个数即可。
代码实现:
代码语言:javascript复制struct node {
int val;
node *left, *right;
};
int height(node *root) {
if (!root) return 0;
int left = height(root->left);
int right = height(root->right);
return max(left, right) 1;
}
void count(node *root, int &sum) {
if (root) {
sum = 1;
count(root->left);
count(root->right);
}
}
bool isFBT(node *root) {
if (!root) return 1;
int sum = 0;
int h = height(root);
count(root, sum);
return sum == pow(2, h) - 1;
}