`
weihe6666
  • 浏览: 440415 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C++ Tree

阅读更多
二叉树


//========================================//
//程序名称:建立二叉树                    //
//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容器)

    标题提到的"tree(c++ tree容器)"是一个第三方实现,旨在为C++开发者提供一个类似于STL接口的树容器,方便用户在项目中构建和操作树形数据。 这个源码库的亮点在于它的用法与C++标准库中的其他容器类似,如vector和...

    国外一个很好的C++ tree 库

    在C++编程中,树(Tree)是一种非常重要的数据结构,它被广泛应用于各种领域,如计算机科学的基础算法、数据库索引、图形学、编译器设计等。当我们需要处理层次关系或者进行分层操作时,树结构尤其有用。本文将深入...

    C++ tree 树 结构

    在这个场景中,我们讨论的是一个名为"C++ tree"的类库,它被设计成类似STL(Standard Template Library,标准模板库)的风格,用于各种项目中。 首先,STL是C++标准库的核心部分,它提供了一系列高效、泛型的容器...

    c++ tree class 符合stl规范

    标题提到的“c++ tree class 符合stl规范”,意味着这个类库设计了一个树数据结构,并遵循了STL的设计原则和接口风格。STL的主要设计原则包括: 1. **泛型编程**:STL是基于模板的,允许类和函数操作任何类型的数据...

    tree-3.1: tree.hh: an STL-like C++ tree class

    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

    `BST.rar_c++ tree node_read-bst-1`这个文件名可能是指包含了C++实现二叉搜索树节点读取的代码,具体实现可能涉及对二进制文件的读取和解析,以便于存储和恢复树的状态。 6. **应用**: 二叉搜索树广泛应用于...

    谷歌 B-Tree C++ 模板库.

    谷歌 B-Tree C++ 模板库 介绍 谷歌开源团队近日发布了C++ B-Tree,这是一个C++模板库,实现了基于B-tree数据结构的有序内存容器。类似于STL的map、set、multimap和multiset模板,C++ B-tree也提供了btree_map、...

    TreeControl复选框:选中某个节点的复选框后,自动选中子节点的复选框

    在IT领域,尤其是在GUI(图形用户界面)设计中,`TreeControl`是一种常见的控件,用于展示层次结构的数据。在Windows编程中,如MFC(Microsoft Foundation Classes)或WPF(Windows Presentation Foundation)中,...

    Tree和List控件

    "Tree"和"List"控件是两种常见的控件类型,广泛应用于各种软件中,如文件管理器、设置面板等。本文将深入探讨这两种控件以及它们的增强特性。 首先,我们来了解一下"Tree控件"。Tree控件,通常被称为树形视图,是一...

    C++R-Tree代码

    C++ R-Tree代码是一种实现空间索引的数据结构,它在地理信息系统、数据库和计算机图形学等领域广泛应用。R-Tree是一种多维空间索引结构,主要用于高效存储和检索多维数据,例如地理位置坐标、图像像素等。下面我们将...

    KDTree(C++).zip

    使用C++实现的基于KDTree的邻近搜索,代码添加了注释。

    Dialog_Search.rar_C++ list excel_MFC读取Excel_mfc excel_mfc tree控件

    3. **C++ Tree控件(CTreeCtrl)**: `CTreeCtrl`类提供了树形视图控件,可以用来组织层次结构的数据。在本例中,可能用树控件来展示Excel工作簿的结构,如不同的工作表名作为树节点,用户可以展开或折叠来查看不同...

    KD-Tree C++程序

    在C++中实现KD-Tree可以帮助我们理解和应用这种数据结构,特别是在处理多维数据时,如在计算机图形学、机器学习、地理信息系统等领域。** ### KD-Tree 基本概念 1. **维度划分**:KD-Tree是针对K维空间的数据结构...

    NYIST-C++实验指导书实验5

    在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。 3.改正以下程序中的错误,并分析错误原因。提示:该程序中point类的构造函数...

    心希盼 C++ STL binaryTree

    在C++编程语言中,STL(Standard Template Library,标准模板库)是一个强大的工具集,它包含了许多容器、迭代器、算法和函数对象。STL虽然没有直接提供一个现成的二叉树数据结构,但我们可以利用其容器,如`vector`...

    kd-Tree源码(c++)

    **kd-Tree源码解析(C++实现)** kd-Tree是一种在高维空间中用于数据组织和检索的树型数据结构,尤其适用于空间分割和近似最近邻搜索。它是一种自平衡的二叉树,每一层的节点代表一个维度,并沿着这个维度进行分割...

    TREEITEM DOWNLOAD

    `treemain.cpp`这个文件名很可能包含了一个简单的C++程序,用于演示如何在实际代码中创建和操作树形控件。在这个文件中,我们可以期待看到如何初始化控件,添加、删除节点,以及处理用户的交互事件等关键步骤。 1. ...

    kdtree的C/C++实现

    Kd树(K-dimensional Tree)是一种在高维空间中用于组织和检索数据的数据结构,尤其在近邻搜索、碰撞检测、机器学习等领域有着广泛的应用。本篇文章将深入探讨Kd树的基本原理、C/C++实现及其在2D和3D空间中的应用。 ...

    Tree Check Box 的选择一致

    带有check box 的树,选中check box 的子节点,根节点也会被选中,所有子节点未被选中,根节点也不选中

    tree-sitter-cpp:树保姆的C ++语法

    "tree-sitter-cpp-master"是树保姆C++解析器的源代码仓库,包含了C++语法的定义文件和相关的构建脚本。通过这个项目,开发者可以学习如何为C++定制和扩展树保姆解析器,也可以将其集成到自己的项目中,实现对C++...

Global site tag (gtag.js) - Google Analytics