判断是否完全二叉树c
时间: 2023-12-16 08:28:07 浏览: 91
用C语言判断一个二叉树是否为另一个的子结构
以下是判断是否完全二叉树的C++代码实现:
```cpp
#include <iostream>
#include <queue>
using namespace std;
struct node {
node *lchild, *rchild;
};
bool judge(node *root) {
queue<node*> q;
if (root != NULL) {
q.push(root);
bool flag = false;
while (!q.empty()) {
node *temp = new node;
temp = q.front();
q.pop();
if (temp != NULL) {
if (flag == true) {
return false;
} else {
q.push(temp->lchild);
q.push(temp->rchild);
}
} else {
flag = true;
}
}
return true;
} else if (root == NULL) {
return true; // 空树也是完全二叉树
}
}
int main() {
// 构造一棵完全二叉树
node *root = new node;
root->lchild = new node;
root->rchild = new node;
root->lchild->lchild = new node;
root->lchild->rchild = new node;
root->rchild->lchild = new node;
root->rchild->rchild = new node;
if (judge(root)) {
cout << "是完全二叉树" << endl;
} else {
cout << "不是完全二叉树" << endl;
}
return 0;
}
```
阅读全文