二叉树快速查找
来源:互联网 发布:mac装win10好吗 编辑:程序博客网 时间:2024/04/30 10:07
#include <iostream>
#include <string.h>
using namespace std;
class TreeNode{
public:
char n[10];
TreeNode *left;
TreeNode *right;
TreeNode(){
left = NULL;
right = NULL;
}
};
bool flag = false;
void search_and_insert(TreeNode *root, TreeNode *current);
int compare(char *a, char *b);
void deleteall(TreeNode *node);
int main()
{
int k;
int n;
cin>>k;
TreeNode *root;
for(int i=0 ;i<k; i++)
{
cin>>n;
flag = false;
for(int j=0; j<n; j++)
{
if(j==0)
{
root = new TreeNode();
cin>>root->n;
}
else
{
TreeNode * current = new TreeNode();
cin>>current->n;
if(!flag)
search_and_insert(root, current);
if(flag)
delete current;
}
}
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
deleteall(root);
}
return 0;
}
void search_and_insert(TreeNode *root, TreeNode *current)
{
TreeNode *temp = root;
while(temp!=NULL)
{
int result = compare(temp->n, current->n);
if(result == 0)
return;
else if(result == 1)
{
if(temp->left == NULL)
{
temp->left = current;
return;
}
else
temp = temp->left;
}
else if(result == -1)
{
if(temp->right == NULL)
{
temp->right = current;
return;
}
else
temp = temp->right;
}
}
}
int compare(char *a, char *b)
{
int lena = strlen(a);
int lenb = strlen(b);
int min = lena>lenb ? lenb : lena;
for(int i=0; i<min; i++)
{
if(a[i] > b[i])
return 1;
else if(a[i] < b[i])
return -1;
}
flag = true;
return 0;
}
void deleteall(TreeNode *node)
{
if(node->left!=NULL)
deleteall(node->left);
if(node->right!=NULL)
deleteall(node->right);
delete node;
}
- 二叉树快速查找
- 二叉树查找、匹配字符串、快速排序
- 查找--二叉查找树
- 给定数组,如何快速建立查找二叉树
- 数据结构快速回顾——二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- c++入门学习笔记指针篇
- Windows系统文件详解
- 关于Jquery延迟加载问题(jquery.timeout.js)
- C++的多态性实现机制剖析
- C++ 类的静态成员
- 二叉树快速查找
- 用iE查看看到的源码和火狐查看到的源码,360查看的源码为什么不一样,求助!!!
- Google C++ 编程风格指南(1):头文件(1)
- Windows常见服务
- RAC 之 RMAN 恢复
- c++ dll 编程
- 软件测试工程师职业规划
- 网络管理命令大全
- C 程序的外部变量与函数