1 Star 0 Fork 0

林进源/我错了

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
是否完全二叉搜索树 1.40 KB
Copy Edit Raw Blame History
林进源 authored 2021-06-15 16:11 +08:00 . add 是否完全二叉搜索树.
#include <iostream>
#include <queue>
using namespace std;
typedef struct TNode
{
int data;
TNode *left;
TNode *right;
}*BinTree;
void Insert(BinTree &T, int a);
int BFS(BinTree T);
int main()
{
int num;
cin >> num;
BinTree T;
T = NULL;
int a;
for (int i = 0; i < num; i++)
{
cin >> a;
Insert(T, a);
}
int printfnum;
printfnum = BFS(T);//记录数量
if (printfnum == num)
{
cout << endl << "YES";
}
else
{
cout << endl << "NO";
}
}
void Insert(BinTree &T, int a)//建树
{
if (T == NULL)
{
T = new TNode;
T->data = a;
T->left = NULL;
T->right = NULL;
}
else
{
if (a < T->data)//一开始没注意到是大的在左,小的在右
{
return Insert(T->right, a);
}
else if (a > T->data)
{
return Insert(T->left, a);
}
}
}
int BFS(BinTree T)
{
int count=0;
int flag=0;//控制计数
int sign = 0;//控制空格
queue<BinTree>q;
if (T == NULL)
{
cout << "NULL";
}
q.push(T);
while (!q.empty())//进行层次遍历
{
if (q.front() == NULL)//遇到空结点停止计数
{
flag = 1;
}
else
{
if (sign == 0)
{
cout << q.front()->data;
sign = 1;
}
else if (sign == 1)
{
cout << " " << q.front()->data;
}
if (flag == 0)
{
count++;
}
q.push(q.front()->left);
q.push(q.front()->right);
}
q.pop();
}
return count;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/lin-jinyuan/i-was-wrong.git
git@gitee.com:lin-jinyuan/i-was-wrong.git
lin-jinyuan
i-was-wrong
我错了
master

Search