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; */

利用数组创建二叉树并赋值相关推荐

  1. JS基础之数组--概述、创建数组的几种方式、数组的特点、数组的常用方法、数组的解构赋值、数组高级API

    一.概述 描述:数组(array)是按照一定顺序排列的一组值,每个值都拥有自己的编号,编号从0开始.整个数组用方括号来表示. 语法:var arr=[item1,item2,item3-] 1.1 注 ...

  2. 井号法(#)创建二叉树(利用前序遍历来建树)C++实现

    不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 利用#号法来创建二叉树 输入: ABD##E##C#F## 对应该输入的二叉树应为这样 解题 ...

  3. asp利用dictionary创建二维数组

    这是asp利用dictionary创建二维数组的例子,这样做的优点是: 1.数组下标可以是字符串 2.长度不是固定的 <% '================================== ...

  4. 二叉树学习笔记之利用前序遍历递归创建二叉树

    利用前序遍历创建二叉树 树的遍历 前序遍历(preorder traversal) 利用前序遍历创建二叉树 中序遍历访问所有结点 前序遍历访问所有结点 后序遍历访问所有结点 实例 树的遍历 树的遍历是 ...

  5. swust oj 978 利用先序遍历创建二叉树的中序遍历

    #include<iostream> using namespace std; typedef struct BTNode{char data;BTNode *l,*r; }BT; //创 ...

  6. 1.2 一维数组的定义、赋值和初始化

    当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...

  7. python 结构体数组_python实现结构体数组(初始化并赋值)

    标签: C语言中结构体数组概念及定义 一个结构体变量可以存放一个学生的一组信息,可是如果有 10 个学生呢?难道要定义 10 个结构体变量吗?难道上面的程序要复制和粘贴 10 次吗? 很明显不可能,这 ...

  8. byte初始化并赋值_一位数组的定义、赋值和初始化.note

    当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...

  9. 按照前序遍历创建二叉树及树的四种遍历方式

    一.二叉树的介绍 二叉树的特点是二叉树的每个结点的度都不大于2,可以视为每个结点都有左孩子和右孩子.故二叉树结点的数据结构为 二.二叉树的特点 1.设根结点所在的层数为第1层,则第i层最多有个结点. ...

最新文章

  1. matlab抽样模块是哪个,Matlab怎样进行信号的重建这个题先让把x(t)=sin(2πt)按照T=0.4抽样,这一步我已经...
  2. 1.10 System类详解
  3. data model of Organization unit - Sales office
  4. java实现顺序栈_Java实现顺序栈原理解析
  5. Magicodes.IE 3.0重磅设计畅谈
  6. unity连接mysql并读取所有数据库_Unity 3D 连接Mysql数据库
  7. 用于机器学习的Python和HDFS
  8. OFFICE技术讲座:双层字体引擎的提出
  9. 50年过去了,嫦娥五号探月依然不能直播,告诉你三个可能
  10. android 高德地图放大缩小,手势交互-与地图交互-开发指南-Android 地图SDK | 高德地图API...
  11. 内存对齐、内存对齐规则解释、内存对齐原理
  12. 学习mescroll的下拉刷新、上拉加载
  13. 必收藏的九大塑料注塑成型技术及其特点
  14. Python基础:while循环 以及 练习题 :三位数的水仙花数 GDP 计算π 判断一个数是否是素数
  15. html 播放360全景图,讯网360全景展示产品-html5全景图-flash全景展示-360度全景图制作...
  16. Codesys电子凸轮表的规划与凸轮曲线的拟合
  17. sql导出的身份证后几位是000
  18. MySQL8版本 Win10忘记密码
  19. win10系统禁用笔记本自带键盘
  20. Delphi设计模式之Wapper模式, Factory

热门文章

  1. 编程语言的发展趋势及未来方向(5):元编程
  2. c语言兔子洞,数据结构水题选讲 - osc_y08db3kb的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. java证书的安装_Java 第三方证书安装
  4. 【PhotoScan精品教程】任务一:新建工程、导入照片、设置坐标系、导入控制点(POS)、自由空三
  5. 剑指offer之把字符串里面空格替换成百分之20[时间复杂度是O(n)]
  6. LeetCode之Remove Duplicates from Sorted List
  7. ALTER 简单操作(mysql)
  8. vue 日期格式化返回指定个数月份_vue过滤器实现日期格式化的案例分析
  9. 这不是特效也不是魔术!
  10. 有趣又好玩的圆外旋轮心形线