二叉树
//========================================//
//程序名称:建立二叉树 //
//Written By HEWEI //
//2011 05 30 //
//========================================//
//=============================================//
//二叉树规则: //
// 1.输入各元素值存入nodelist数组 //
// 2.二叉树各元素存入b_tree数组 //
// 3.节点遵循左小(level*2)右大(level*2+1)//
//=============================================//
#include<iostream>
using namespace std;
#define MAX 20
//声明nodelist 和 b_tree数组
int NodeList[MAX];
int b_tree[MAX];
int index = 0;
//----------------------------------------------//
//-------------建立二叉树-----------------------//
//----------------------------------------------//
void Create_Tree()
{
int level;
int i;
//存入第一个元素与b_tree[1]
b_tree[1] = NodeList[1];
//取出NodeList中的值,按照二叉树的规则存入b_tree
for(i = 2 ; i <= index; i++)
{
level = 1; //从第1层开始搜寻
while(b_tree[level] != 0) //判断是否有子树存在
{
if(NodeList[i] < b_tree[level])//判断是左子树还是右子树
level = level * 2; //左子树
else
level = level * 2 + 1; //右子树
}
b_tree[level] = NodeList[i];
}
}
//----------------------------------------------//
//--------------各元素值存入nodelist数组--------//
//----------------------------------------------//
void Store_Data(int nCapacity)
{
int temp;
for(int i = 1; i <= nCapacity; i++)
{
cout <<"Please Input Data :";
cin >> temp;
NodeList[i] = temp;
index ++;
}
cout << endl;
}
//--------------------------------------------//
//---------------输出数组元素-----------------//
//--------------------------------------------//
void Output(int *pointer,int Max_index)
{
for(int i = 1; i < Max_index; i++)
cout << pointer[i] << " ";
}
int main(void)
{
int capacity ; //输入数据的容量
//初始化数组为0
for(int i = 0; i < MAX; i++)
{
NodeList[i] = 0;
b_tree[i] = 0;
}
//存储输入的数据
cout <<"Please Input the capacity : ";
cin >> capacity;
cout << endl;
Store_Data(capacity);
//建立二叉树
Create_Tree();
//输出数组和二叉树的元素
cout <<"Output the content Data of NodeList : " << endl;
Output(NodeList,MAX);
cout << endl;
cout <<"Output the content Data of b_tree : " << endl;
//Output(b_tree,MAX);
for(int i = 1; i < MAX; i ++)
{
cout <<"[" << i << "]" << " " << b_tree[i] << endl;
}
return 0;
}
分享到:
相关推荐
标题提到的"tree(c++ tree容器)"是一个第三方实现,旨在为C++开发者提供一个类似于STL接口的树容器,方便用户在项目中构建和操作树形数据。 这个源码库的亮点在于它的用法与C++标准库中的其他容器类似,如vector和...
在C++编程中,树(Tree)是一种非常重要的数据结构,它被广泛应用于各种领域,如计算机科学的基础算法、数据库索引、图形学、编译器设计等。当我们需要处理层次关系或者进行分层操作时,树结构尤其有用。本文将深入...
在这个场景中,我们讨论的是一个名为"C++ tree"的类库,它被设计成类似STL(Standard Template Library,标准模板库)的风格,用于各种项目中。 首先,STL是C++标准库的核心部分,它提供了一系列高效、泛型的容器...
标题提到的“c++ tree class 符合stl规范”,意味着这个类库设计了一个树数据结构,并遵循了STL的设计原则和接口风格。STL的主要设计原则包括: 1. **泛型编程**:STL是基于模板的,允许类和函数操作任何类型的数据...
The tree.hh library for C++ provides an STL-like container class for n-ary trees, templated over the data stored at the nodes. Various types of iterators are provided (post-order, pre-order, and ...
`BST.rar_c++ tree node_read-bst-1`这个文件名可能是指包含了C++实现二叉搜索树节点读取的代码,具体实现可能涉及对二进制文件的读取和解析,以便于存储和恢复树的状态。 6. **应用**: 二叉搜索树广泛应用于...
谷歌 B-Tree C++ 模板库 介绍 谷歌开源团队近日发布了C++ B-Tree,这是一个C++模板库,实现了基于B-tree数据结构的有序内存容器。类似于STL的map、set、multimap和multiset模板,C++ B-tree也提供了btree_map、...
在IT领域,尤其是在GUI(图形用户界面)设计中,`TreeControl`是一种常见的控件,用于展示层次结构的数据。在Windows编程中,如MFC(Microsoft Foundation Classes)或WPF(Windows Presentation Foundation)中,...
"Tree"和"List"控件是两种常见的控件类型,广泛应用于各种软件中,如文件管理器、设置面板等。本文将深入探讨这两种控件以及它们的增强特性。 首先,我们来了解一下"Tree控件"。Tree控件,通常被称为树形视图,是一...
C++ R-Tree代码是一种实现空间索引的数据结构,它在地理信息系统、数据库和计算机图形学等领域广泛应用。R-Tree是一种多维空间索引结构,主要用于高效存储和检索多维数据,例如地理位置坐标、图像像素等。下面我们将...
使用C++实现的基于KDTree的邻近搜索,代码添加了注释。
3. **C++ Tree控件(CTreeCtrl)**: `CTreeCtrl`类提供了树形视图控件,可以用来组织层次结构的数据。在本例中,可能用树控件来展示Excel工作簿的结构,如不同的工作表名作为树节点,用户可以展开或折叠来查看不同...
在C++中实现KD-Tree可以帮助我们理解和应用这种数据结构,特别是在处理多维数据时,如在计算机图形学、机器学习、地理信息系统等领域。** ### KD-Tree 基本概念 1. **维度划分**:KD-Tree是针对K维空间的数据结构...
在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。 3.改正以下程序中的错误,并分析错误原因。提示:该程序中point类的构造函数...
在C++编程语言中,STL(Standard Template Library,标准模板库)是一个强大的工具集,它包含了许多容器、迭代器、算法和函数对象。STL虽然没有直接提供一个现成的二叉树数据结构,但我们可以利用其容器,如`vector`...
**kd-Tree源码解析(C++实现)** kd-Tree是一种在高维空间中用于数据组织和检索的树型数据结构,尤其适用于空间分割和近似最近邻搜索。它是一种自平衡的二叉树,每一层的节点代表一个维度,并沿着这个维度进行分割...
`treemain.cpp`这个文件名很可能包含了一个简单的C++程序,用于演示如何在实际代码中创建和操作树形控件。在这个文件中,我们可以期待看到如何初始化控件,添加、删除节点,以及处理用户的交互事件等关键步骤。 1. ...
Kd树(K-dimensional Tree)是一种在高维空间中用于组织和检索数据的数据结构,尤其在近邻搜索、碰撞检测、机器学习等领域有着广泛的应用。本篇文章将深入探讨Kd树的基本原理、C/C++实现及其在2D和3D空间中的应用。 ...
带有check box 的树,选中check box 的子节点,根节点也会被选中,所有子节点未被选中,根节点也不选中
"tree-sitter-cpp-master"是树保姆C++解析器的源代码仓库,包含了C++语法的定义文件和相关的构建脚本。通过这个项目,开发者可以学习如何为C++定制和扩展树保姆解析器,也可以将其集成到自己的项目中,实现对C++...