首页 > 编程语言 >C++从std::vector<int>类型数据创建二叉树

C++从std::vector<int>类型数据创建二叉树

时间:2023-10-27 16:00:30浏览次数:41  
标签:std index TreeNode createBinaryTree C++ vector 二叉树 nodes

背景

在和chatGPT的日常代码交流中,这位“老师”总能给出不不少好代码,以下就是 C++从std::vector类型数据创建二叉树 的完整代码段:

TreeNode* createBinaryTree(const std::vector<int>& nodes, int index) {
    if (index >= nodes.size() || nodes[index] == -1) {
        return nullptr;
    }

    TreeNode* root = new TreeNode(nodes[index]);
    root->left = createBinaryTree(nodes, 2 * index + 1);
    root->right = createBinaryTree(nodes, 2 * index + 2);
    return root;
}

int main() {
    // Test case 1
    std::vector<int> nodes1 = {3, 9, 20, -1, -1, 15, 7};
    TreeNode* root1 = createBinaryTree(nodes1, 0);

    return 0;
}

标签:std,index,TreeNode,createBinaryTree,C++,vector,二叉树,nodes
From: https://www.cnblogs.com/huangshiyi/p/17792549.html

相关文章

  • C++的std::move与std::forward原理总结
    目录0、左值与右值的理解左值和右值的概念左值引用和右值引用1.std::move1.1函数原型1.2参数讨论1.3通用引用1.4返回值1.5std::move的常用例子1.5.1用于vector添加值1.5.2用于unique_ptr传递1.6再说转移对象控制权2.std::foward参考阅读大型的C++开源项目代码,基本......
  • [Leetcode] 0104. 二叉树的最大深度
    104.二叉树的最大深度题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7],3/\920/\157返回它的最大深度 3。......
  • C++ invoke与function的区别
    C++invokeinvoke是C++17标准引入的一个函数模板,用来调用可调用对象(CallableObject,如函数指针、函数对象、成员函数指针等)并返回结果。invoke提供了统一的调用语法,无论可调用对象的类型是什么,都可以使用同一种方式进行调用。详见:https://en.cppreference.com/w/cpp/utility/fu......
  • C++运算符
    C++运算符运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符算术运算符下表显示了C++支持的所有算术运算符。假设变量A=10;B=20,则:运算符描......
  • 94.二叉树的中序遍历
    1.题目介绍给定一个二叉树的根节点root,返回它的中序遍历。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点数目在范围[0,100]内-100<=Node.val<=1002.题解2.1递归首先我们需......
  • murmurhash64B c# 实现 c++ 实现
    c#实现:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacegjh.utility{publicclassMurmurHash64B{publicstaticulongMakeHashValue(byte[]key,uintseed=0xee6b27eb){......
  • C++ 与 QML 之间进行数据交互的几种方法
    一、属性绑定这是最简单的方式,可以在QML中直接绑定C++对象的属性。通过在C++对象中使用Q_PROPERTY宏定义属性,然后在QML中使用绑定语法将属性与QML元素关联起来。person.h#include<QObject>classPerson:publicQObject{Q_OBJECT/*使用Q_PROPERTY定义交......
  • c++中的继承(下)
    首先我们先回忆一下,在派生类(子类)中默认的成员函数做了什么事情?我们现在可以这么认为对于普通类来说呢?只需要看待两个部分的成员:内置类型和自定义类型。而对于派生类而言序言看待三个部分的成员:内置类型,自定义类型以及父类类型构造和析构拷贝构造普通类对于内置类型一般不处理,自定类......
  • 代码随想训练营的第十五天(Python)| 二叉树的前、中、后续遍历(各种花式遍历哈哈)
    前序遍历统一写法用None来区分遍历查找的节点和处理节点1、递归法classSolution:defpreorderTraversal(self,root:Optional[TreeNode])->List[int]:res=[]self.preorder(root,res)returnresdefpreorder(self,root,res):......
  • C++修饰符类型
    C++允许在char、int和double数据类型前放置修饰符。修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求。当前有以下几种数据类型修饰符:signedunsignedlongshort修饰符signed、unsigned、long和short可应用于整型,signed和unsigned可应用于字符型,long可应用于双精度......