利用数组创建二叉树并赋值

1:二叉树的创建与赋值

(1):前言知识

  • 这里的创建是利用层序序列进行创建,主要就是根节点的坐标为i 的话 那么左节点的坐标为 2i+1,右节点的坐标为2i+2;
  • 开辟一个结构体
struct Node {int val;Node * left;Node * right;Node () : val(-1),left(NULL),right(NULL) {};Node(int x) : val(x),left(NULL),right(NULL) {};
}node;
  • 创建一个这个结构体的实例
Node* node = new Node(3);//3传入的val值

(2):代码演示


/**思路:1.建树思路,我们是将要输入的数装进一个数组当中,如果某个结点是空结点的话,那就将其 赋值位-12.我们创建一个函数,函数的返回类型为该树,函数的参数为数组和我们的数组下标   3.通过观察我们发现一个数组的的根结点为 i 的话 那么的左孩子结点为:2*i+1;  右孩子结点为:2*i+2; */#include<bits/stdc++.h>
using namespace std;//typedef struct Node* TreeNode;
struct Node {int val;Node* left;Node* right;Node(): val(-1),left(NULL),right(NULL){};Node(int x) : val(x),left(NULL),right(NULL){};
};//根据层序序列进行输入 
Node* createNode(vector<int>& v,int index) {if(index > v.size()-1) return NULL;Node* node = new Node(v[index]);
//	node->val = v[index];node->left = createNode(v,index*2+1);node->right = createNode(v,index*2+2);return node;
}	void preorder(Node* root) {if(root == NULL) return ;cout << root->val<< ' ';if(root->left != NULL) preorder(root->left);if(root->right != NULL) preorder(root->right);	
} int main() {vector<int> v;int n;cin >> n;for (int i = 0; i < n; i++) {int nums;cin >> nums;v.push_back(nums);}Node* node;node = createNode(v,0);preorder(node);} /**
7
1 2 3 -1 4 5 -1前序输出 1 2 -1 4 3 5 -1; */

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020 中国开源年会(COSCon'20)再启程:开源向善(Open Source for Good)

中国开源年会COSCon2020正式启动&#xff01;*本图由开源社设计组叶凯设计时间&#xff1a;2020年10月24-25日线上直播地址&#xff1a;bilibili & Youtube讲师互动平台&#xff1a;Zoom时间弹指飞逝&#xff0c;转眼即过去了一年。不知道各位在这多舛的半年间又和开源这二…

使用Azure Functions玩转Serverless

Serverless&Azure Functions通过无服务器计算&#xff0c;开发者无需管理基础结构&#xff0c;从而可以更快构建应用程序。通过无服务器应用程序&#xff0c;将由云服务提供商自动预配、缩放和管理运行代码所需的基础结构。要理解无服务器计算的定义&#xff0c;注意到服务…

java并发之初识

一:并发编程的难点 1:原子性问题 操作系统做任务切换,可以发生在任何一条CPU指令执行完成后&#xff1b;CPU能保证的原子操作是指令级别的&#xff0c;而不是高级语言的操作符&#xff1b; n不是原子操作的&#xff0c;而是3条指令 2:可见性问题 可见性是指一个线程对一个…

java并发之synchronized实现原理及其优化

1:synchronnized概述 synchronized修饰的方法或代码块相当于并发中的临界区&#xff0c;即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性&#xff0c;有…

.NET 是信息技术应用创新产业重要参与者

今天是国庆节&#xff0c;也是中秋节&#xff0c;月满中秋&#xff0c;举国欢庆&#xff0c;在这里祝各位开发者中秋国庆快乐。放假在家就想把这几年对于.NET发展相关生态做个梳理&#xff0c;写一篇文章来总结一下这两年从腾讯出来自己创业&#xff0c;推动.NET在国内的应用的…

蓝桥杯- 包子凑数

一:题目 题目描述 小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有 NN 种蒸笼&#xff0c;其中第 ii 种蒸笼恰好能放 A_iA i ​ 个包子。每种蒸笼都有非常多笼&#xff0c;可以认为是无限笼。 每当有顾客想买 XX 个包子&#xff0c;卖包子的大叔就会迅速选出若…

秋天 | 等疫情过后,我们继续背起相机去旅行

这是头哥侃码的第218篇原创2020年&#xff0c;注定是不平凡的一年。八个月前&#xff0c;我正和家人一起沉浸在春节的喜悦中&#xff0c;可没成想一场疫情的到来彻底改变了欢快的气氛。别的倒没什么&#xff0c;只是之前所有的计划全部被打乱了。先说春节假期&#xff0c;和舅舅…

简单理解CAP-BASE

1、CAPCAP是分布式系统的指导理论&#xff0c;是NoSQL数据库的理论基石。CAP其实就是对分布式系统的特性总结&#xff0c;即一致性&#xff08;Consistency&#xff09;、可用性&#xff08;Availability&#xff09;、分区容错性&#xff08;Partition tolerance&#xff09;。…

面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?

文章目录[TOC](文章目录)1:解析URL网址,从而生成发送给Web服务器的Http请求信息2:真实地址查询-----(DNS域名解析)3:调用协议栈4:可靠的传输 TCP5:远程定位--IP地址6:两点传输--获取MAC地址7:网卡--出口8:送别者--交换机9:出境大门--路由器10:相互扒皮--服务端与客户端1:解析UR…

C# 中的 is 真的是越来越强大,越来越语义化

一&#xff1a;背景 1. 讲故事最近发现 C#7 之后的 is 是越来越看不懂了&#xff0c;乍一看花里胡哨的&#xff0c;不过当我静下心来仔细研读&#xff0c;发现这 is 是越来越短小精悍&#xff0c;而且还特别语义化&#xff0c;那怎是一个爽字了得????&#xff0c;这一篇就和…

leetcode209. 长度最小的子数组(滑动窗口)

一:题目 二:上码 class Solution { public:/**思路:1.滑动窗口解法1>:确定窗口内是什么2>:确定窗口的起始位置3>:确定窗口的终止位置2.窗口:也就是我们的求的连续字符串的和3.窗口的起始位置: 窗口的起始位置最先是我们数组的起始位置,当窗口内连续数组的和大于targe…

开源特训营 - Lesson 4 - 如何运营社区

编辑&#xff1a;李明康责编&#xff1a;袁睿斌作者&#xff1a;课程助教 - 苏斌主讲教师&#xff1a;庄表伟&#xff08;开源社理事长&#xff09;、赵生宇&#xff08;同济大学&#xff09;本次课程的主题为《如何运营社区》&#xff0c;主讲者为开源社的理事长庄表伟老师和来…

leetcode904. 水果成篮(滑动窗口)

一:题目 二:上码 class Solution { public:/**思路:滑动窗口1.滑动窗口为我们 两个品种水果的个数2.滑动窗口的起始位置为数组的起始位置,当遇见一个新的水果种类的时候,这时候就需要移动我们的起始位置这里移动起始位置是要注意的,我们需要移动起始到我们的窗口中 完全没有 这…

拥抱.NET 5,从自研微服务框架开始

“ 2016年发布了.NET Core第一个正式版本&#xff0c;而.NET5也将在下个月就正式来临了&#xff0c;技术日新月异&#xff0c;也有点让人应接不暇。在框架设计上&#xff0c;.NET Framework的全家桶理念&#xff0c;培养了一大批的CRUD&#xff0c;而.NET Core转变成了按需使用…

leetcode周赛第一题6037. 按奇偶性交换后的最大数字(冒泡法)

一:题目 二:上码 class Solution { public:int largestInteger(int num) {string str to_string(num);for (int i 0; i < str.size()-1; i) {for (int j i1; j < str.size(); j) {int num1 str[j]-0;int num2 str[i]-0;if (num1%2 num2%2) {//这里我们控制的是奇数…

从零开始打造专属钉钉机器人

一、前言废话不多的实现简单的钉钉机器人。我们分为下面几个步骤来逐步讲解。1.钉钉机器人的类型2.如何打造一个最最简单的钉钉机器人二、钉钉机器人的类型常用的钉钉机器人有两种&#xff0c;1、通知类型的机器人&#xff1a;适合在群内进行一些通知&#xff0c;推荐消息等内容…

Azure 内容审查器之文本审查

内容审查器Azure 内容审查器也是一项认知服务。它支持对文本、图形、视频进行内容审核。可以过滤出某些不健康的内容&#xff0c;关键词。使你的网站内容符合当地的法律法规&#xff0c;提供更好的用户体验。文本内容审核其中文本内容的审核应用比较广泛。比如在审核游戏中的群…

java并发之CAS

文章目录1:何为CAS2:CAS图示3:CAS和Volatile的关系4:为何CAS效率更高一些5:CAS的特点7:受保护得共享数据类型(1):原子基本数据类型(2):原子引用数据类型7:ABA问题(1):什么是ABA(2):如何解决呢&#xff1f;1:何为CAS CAS(Compare And Swap)&#xff0c;即比较并交换。是解决多线…

快速了解 ASP.NET Core Blazor

最近在几个微信 .NET 交流群里大家讨论比较频繁的话题就是这几天自己的面试经历。面试官&#xff1a;“你刚说你喜欢研究新技术&#xff0c;那你有了解过 Blazor 吗&#xff1f;”作为一位专注于 .NET 开发的软件工程师&#xff0c;你好意思说你对 Blazor 一点也不解吗&#xf…

ASP.NET Core集成Nacos配置中心之适配多格式配置

前言 默认情况下&#xff0c;用nacos-sdk-csharp集成ASP.NET Core的配置系统&#xff0c;是基于JSON格式的数据。随着业务系统的多样化&#xff0c;可能用的配置格式也是各有千秋的。有的会用yaml/yml&#xff0c;有的会用ini&#xff0c;有的会用xml&#xff0c;等等。那么如果…