二叉树理论基础

本文介绍了二叉树的基本概念,以及STL中的map、set、multimap和multiset数据结构的用途、特点和操作方法,包括键值对存储、查找速度、初始化和遍历方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自: 二叉树的详解  二叉树理论基础二叉树的每个结点至多只有两个子树,并且二叉树的子树有左右之分,其次序不能任意颠倒。

其中说一下:map、set、multimap,multiset(STL)set、map、multiset、multimap的介绍及使用

map、set:

Map(字典): Map 对象保存键值对,并且能够记住键的原始插入顺序任何值(对象或者原始值)都可以作为一个键或一个值。

特点:

  1. 以键值对的形式存储数据,即 key-vlue 形式。
  2. Map 对象存储的数据是有序的,而我们平常使用的对象是无序的,所以通常当我们需要使用对象形式(键值对)存储数据且需要有序时,采用 Map 对象进行存储。
  3. Map 对象的键值可以是任意类型,我们平时使用的对象只能使用字符串作为键。

初始化 map 对象:

let myMap = new Map();

初始化 map 时传入数据:

由于 Map 对象是一个构造函数,所以我们在初始化的时候可以传入默认数据的,只不过我们需要注意传入默认数据的格式,它默认接收一个二维数组。

let defaultMap = new Map([['name', '张三'], ['age', 20]]);

插入数据:

myMap.set('name', '小猪课堂'); // 字符串作为键
myMap.set(12, '会飞的猪'); // number 类型作为键
myMap.set({}, '知乎'); // 对象类型作为键

Set(集合):Set 对象允许你存储任何类型唯一值,无论是原始值或者是对象引用。、

特点:

  1. 类数组对象,它长得就很像数组
  2. 存储的值是不重复的,通常使用它来实现数组去重。
  3. 存储的数据不是键值对的形式,可以存储任何类型的数据。

 Set对象存储的不是键值对形式,它只存储了值,没有键,就和数组类似。

初始化Set对象:

let mySet = new Set();

初始化Set对象带有默认值:

和Map类似,Set初始化时也可以初始化默认数据。

let defaultSet = new Set(['张三', 12, true]);
  • Map和Set查找速度都非常快,时间复杂度为O(1),而数组查找的时间复杂度为O(n)。
  • Map对象初始化的值为一个二维数组,Set对象初始化的值为一维数组。
  • Map对象和Set对象都不允许键重复(可以将Set对象的键想象成值)。
  • Map对象的键是不能改的,但是值能改,Set对象只能通过迭代器来更改值。

 二叉树的遍历方式:前中后序遍历(深度优先遍历),层序遍历(广度优先遍历)

二叉树定义:链式存储:

struct TreeNode{

        int val;

        TreeNode *left;

        TreeNode *right;

        TreeNode(int x): val(x), left(NULL); right(NULL){}

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值