当前位置: 首页 > news >正文

树结构及其算法-用数组来实现二叉树

目录

树结构及其算法-用数组来实现二叉树

C++代码 


树结构及其算法-用数组来实现二叉树

使用有序的一维数组来表示二叉树,首先可将此二叉树假想成一棵满二叉树,而且第k层具有2^{k-1}个节点,按序存放在一维数组中。首先来看看使用一维数组建立二叉树的表示方法以及数组索引值的设置。

可以看出此一维数组中的索引值有以下关系:

  1. 左子树的索引值是父节点的索引值乘2。
  2. 右子树的索引值是父节点的索引值乘2加1。

接着来看如何以一维数组建立二叉树的实例,实际上就是建立一棵二叉查找树。这是一种很好的排序应用模式,因为在建立二叉树的同时数据就经过了初步的比较判断,并按照二叉树的建立规则来存放数据。二叉查找树具有以下特点:

  1. 可以是空集合,若不是空集合,则节点上一定要有一个键值。
  2. 每一个数根的值需大于左子树的值。
  3. 每一个树根的值需小于右子树的值。
  4. 左右子树也是二叉查找树。
  5. 树的每个节点值都不相同。 

C++代码 

#include<iostream>
using namespace std;class Tree {
private:int* treeNode;int size;int level;
public:Tree(int size) {treeNode = new int[size] {0};this->size = size;level = 0;}void SetTree(int* tempData, int tempSize) {for (int i = 0; i < tempSize; i++) {for (level = 1; treeNode[level] != 0;) {if (tempData[i] > treeNode[level])level = level * 2 + 1;elselevel = level * 2;}treeNode[level] = tempData[i];}}void PrintTree() {for (int i = 1; i < size; i++)cout << treeNode[i] << " ";cout << endl;}
};int main() {int data[]{ 6, 3, 5, 9, 7, 8, 4, 2 };cout << "原始数据:" << endl;for (int i = 0; i < 8; i++)cout << data[i] << " ";cout << endl;Tree tree(16);tree.SetTree(data, 8);cout << "二叉树数据:" << endl;tree.PrintTree();return 0;
}

输出结果

http://www.lryc.cn/news/213799.html

相关文章:

  • 知识图谱与大模型结合方法概述
  • ASO优化之如何制作Google Play的长短描述
  • Python-platform模块
  • Yolov5旋转框(斜框)检测自己的数据集,附带代码模型可以收敛
  • 嵌入式应用选择正确的系统设计方法:第三部分
  • pthread_attr_getstacksize 问题
  • anaconda常见语法
  • reactive与ref VCA
  • 小程序day01
  • redis主要支持的数据类型有哪些?—— 筑梦之路
  • 解决国际阿里云服务器挂载云盘的问题!!
  • 基于吉萨金字塔建造算法的无人机航迹规划-附代码
  • 高频SQL50题(基础版)-1
  • RecyclerView自定义LayoutManager从0到1实践
  • 【虹科干货】5个关于微服务的误解
  • 利用卷影拷贝服务攻击域控五大绝招
  • web3 在React dapp中全局管理web3当前登录用户/智能合约等信息
  • Golang硬件控制:将软件力量扩展到物理世界
  • Docker 查看Image镜像的Dockerfile方法
  • el-dialog中嵌套iframe之后拿不到iframe的id 的解决办法
  • 汇总公安局网站建设想法,QPQ盐浴氮化处理
  • 前度开发面试题
  • 如何保证缓存中都是热点数据?
  • 什么是Webpack?它的主要功能是什么?
  • 基于深度学习的人脸性别年龄识别 - 图像识别 opencv 计算机竞赛
  • 宝塔安装mongodb插件失败的解决办法
  • CVE-2018-8174 IE浏览器远程代码执行漏洞
  • 用前端框架Bootstrap和Django实现用户注册页面
  • MySQL用户管理和授权
  • PCIe 的 MSI 中断详解,寄存器级别的详细流程分析,完全搞懂硬件的工作流程