我在做leetcode上的二叉树题目,经常会报错,但是又不知道错在哪里,于是我想到在vscode上调试我写的代码,于是我参考了leetcode 二叉树的建立、释放内存、层序遍历输出,C++

做了简化,可以直接在vscode用使用

使用

1.定义vector<int>nums={};如果是空节点用-1代替

2.TreeNode *root=createTree(nums,0);//以数组中下标为0的数建立二叉树

3.printTree(root);//以层次遍历顺序输出二叉树

缺点:打印时不能显示二叉树双亲节点和子节点的关系

代码

#include<iostream>
#include<vector>
#include<queue>
using namespace std;struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode() : val(0), left(nullptr), right(nullptr) {}TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}TreeNode(int x, TreeNode* left, TreeNode* right) : val(x), left(left), right(right) {}
};TreeNode* creatTree(vector<int> nums, int i) {if (i >= nums.size() || nums[i] == -1)              return NULL;//判断输入是否有效TreeNode* root = new TreeNode(nums[i]);             root->left = creatTree(nums, 2 * i + 1);            root->right = creatTree(nums, 2 * i + 2);  return root;
}
void printTree(TreeNode* root) {if (root == nullptr)return;queue<TreeNode*> Q;Q.push(root);int count = 0;while (!Q.empty()) {count++;cout << "第" << count << "层节点:";int size = Q.size();for (int i = 0; i < size; i++){TreeNode* node = Q.front();Q.pop();cout << node->val << " ";if (node->left) Q.push(node->left);if (node->right)  Q.push(node->right);}cout << endl;}
}

测试

建立上图的二叉树

int main()
{vector<int>nums = { 8,13,4,-1,-1,5,1 };TreeNode* root = creatTree(nums, 0);printTree(root);
}

用数组建立二叉树(LeetCode二叉树测试)相关推荐

  1. C语言有序数组转为平衡的二叉树(附完整源码)

    C语言有序数组转为平衡的二叉树 C语言有序数组转为平衡的二叉树完整源码(定义,实现,main函数测试) C语言有序数组转为平衡的二叉树完整源码(定义,实现,main函数测试) #include< ...

  2. LeetCode二叉树系列——515.最每个树行中找最大值

    一.题目描述: 515. 在每个树行中找最大值 难度中等265收藏分享切换为英文接收动态反馈 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值. 二.题解 对二叉树不了解的,可以先看 ...

  3. LeetCode二叉树系列——236.二叉树的最近公共祖先

    一.题目描述: 236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表 ...

  4. LeetCode二叉树系列——145.二叉树的后序遍历

    一.题目描述: 144. 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 后序遍历. . 二.题解 对二叉树不了解的,可以先看第三部分的分析 /*** Definition for ...

  5. 八十一、Python | Leetcode 二叉树系列(下篇)

    @Author:Runsen @Date:2020/7/6 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  6. 【IT笔试面试题整理】有序数组生成最小高度二叉树

    [试题描述]定义一个函数,输入一个有序数组生成最小高度二叉树 We will try to create a binary tree such that for each node, the numb ...

  7. Leetcode: 二叉树的后序遍历

    Leetcode: 二叉树的后序遍历 后遍历的流程:一直往下走,把路口记下来,假如路口有馒头,我们是不吃的,因为要先吃最后的,中间的岔路如果有岔路,就把右边的岔路记下来,但是因为右边没有走过,所以访问 ...

  8. PTA - 建立与遍历二叉树

    建立与遍历二叉树 题目:以字符串的形式定义一棵二叉树的先序序列,若字符是'#', 表示该二叉树是空树,否则该字符是相应结点的数据元素.读入相应先序序列,建立二叉链式存储结构的二叉树,然后中序遍历该二叉 ...

  9. C语言二叉树字符统计,C语言实现二叉树-利用二叉树统计单词数目

    昨天刚参加了腾讯2015年在线模拟考: 四道大题的第一题就是单词统计程序的设计思想: 为了记住这一天,我打算今天通过代码实现一下: 我将用到的核心数据结构是二叉树: (要是想了解简单二叉树的实现,可以 ...

最新文章

  1. 大数据目标检测推理管道部署
  2. Cassandra 概况
  3. Java项目-基于SSM实现律师事务所管理平台
  4. 文本类文件与VS关联-实践
  5. left edge algorithm.
  6. Git Push 免输 用户名和密码
  7. WPF Application 类介绍以及怎样修改启动方式
  8. 标准C程序设计七---66
  9. python利用微信的方法_作为程序员,如何利用Python玩转微信,让你的微信与众不同...
  10. openssl中算法的组织方式
  11. StackPanel 控件自动出现滚动条
  12. 【AD】Altium Designer 原理图的绘制
  13. url的中文转码和解码
  14. 图片转字符画(已打包)
  15. OSChina 周一乱弹 —— 带你装逼带你飞~
  16. 华为电脑和手机一碰传_体验华为“一碰传”高科技,实现手机和电脑互传文件...
  17. 微分方程求解matlab冲激信号,用Matlab求冲激响应的几种方法
  18. Unity3D 片元NDC空间z值(ZBuffer)转View空间z值,公式推导
  19. write()与 read() 函数用法(C语言)
  20. 记一次针对鹅厂的盗号追踪——盗号,朋友,以及妹子的故事

热门文章

  1. HDOJ_1016 素数环
  2. UVA11870 Antonyms【并查集】
  3. HDU1106 排序(解法二)(废除!!!)
  4. 数学归纳法证明时间复杂度
  5. Inception V3 的 tensorflow 实现
  6. 经典卷积神经网络的学习(二)—— VGGNet
  7. 小波、超小波(多尺度几何分析)与压缩感知
  8. leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)
  9. 【笔试/面试】—— 奇葩 C/C++ 语法题(二)
  10. android gpu 编程,Android设备上的GPU编程