二叉树的构造

二叉树的构造方法 做Leetcode上面的题目时,遇到二叉树的问题,想要用一个二叉树进行验证,每次构造二叉树都很麻烦,特此写一个构造函数。 1.用数组构造二叉树 void treeNodeConstructor(TreeNode *&root, int data[],int n,int index){//此处root一定要加&,为对指针的引用 /* data为存储节点数据的数组,n为data数组的长度,in 阅读详情
struct Node{
    char data;
    Node* right, *left;
};
class Bitree{
public:
    Bitree(){
        root = new Node();
        root->left = nullptr;
        root->right = nullptr;
    }
    void CreateBitree(string &s){
        int pos = -1;
        root = Create(s,pos);
    }
    Node* Create(string &s, int &pos){// 注意这里的pos一定要写成引用,否则不能保证pos的累加
        pos++;
        Node* node ;
        if(pos > s.size()) return nullptr;
        else  if(s[pos] == '#') node = nullptr;
        else{
            node = new Node();
            node->data = s[pos];
            node->left = Create(s, pos);
            node->right = Create(s, pos);
        }
        return node;
    }
    
    void preorder(Node* p){
        if(!p) return;
        cout<< p->data<<endl;
        preorder(p->left);
        preorder(p->right);
    }
    Node* root;
};


int main(){
    string s = "ABD##E#F##C##";
    Bitree t;
    t.CreateBitree(s); //通过先序遍历的顺序构造二叉树
    t.preorder(t.root);
    return 0;

}

 

【教程】已知二叉树的后序序列和中序序列构造二叉树 原理: 二叉树的后序序列遍历过程是:左→右→根。中序序列遍历过程是:左→根→右。 已知后序序列可以唯一确定根结点,即:后序序列的最后一个结点就是根结点。确定完根结点之后,根据中序序列可以确定根结点的左子树和右子树,即:在中序序列中根结点的左边是左子树,根结点的右边是右子树。 例题: 已知某二叉树的后序序列为GDBEFCA,中序序列为DGBAECF,则构造该二叉树的过程如下图。 详细过程如下: step1:后序序列为GDBEFCA,中序序列为DGBAECF    &nb. 阅读详情

相关推荐

【教程】已知二叉树的先序序列和中序序列构造二叉树

原理: 二叉树的先序序列遍历过程是:根→左→右。中序序列遍历过程是:左→根→右。 已知先序序列可以唯一确定根结点。确定完根结点之后,根据中序序列可以确定左子树和右子树。 例题: 已知某二叉树的先序序列为ABDGCEF,中序序列为DGBAECF,则构造该二叉树的过程如下图。 详细过程如下: step1:先序序列为ABDGCEF,中序序列为DGBAECF             可以.

muyuxifeng的博客 1万+

在线二叉树与哈夫曼树生成工具(转载https://blog.youkuaiyun.com/yhtgb/article/details/120904154)

在线直接生成二叉树

伏颜的博客 5419

【数据结构】构造二叉树的三种方法

题目: binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child.1、Three Constructor: creat a tree by copy. creat a t

_Previous的博客 7566

在线二叉树&哈夫曼生成工具

在线二叉树&哈夫曼生成工具在线二叉树生成在线哈夫曼生成链接 在线二叉树生成 必须有中序,前序和后序填写一个即可,就可以生成二叉树的另外一个序列,并可以看到右侧生成的数 在线哈夫曼生成 可以快速生成对应的哈夫曼数 格式如示例即可,并可以快速计算出带权总值 链接 http://www.easycode.top/ ...

heaboy的专栏 1万+

PlayReady Encrypt XAP 解密讨论

目前WP7市场上的绝大部分XAP都被MS进行了加密,经过分析,这个加密方式采用了AES方式进行了加密,本人经过对新的XAP格式(PRE)进行了分析,发现新的格式里,实际上是对之前PK(ZIP格式)的XAP进行了加密然后封装:   typedef struct {   DWORD HDR; // 0x07455250 : PRE & 0x7   DWORD a1; // always 0x1   D

u013729125的专栏 1511

解密高并发系统的瓶颈:五大解决方案

在互联网应用中,高并发是指在短时间内同时有大量的用户访问一个网站或服务,造成系统压力过大,导致服务器宕机或服务停止响应的情况。高并发是互联网应用面临的一个重要问题,需要采取一系列措施来解决。负载均衡、缓存、数据库优化、异步处理和分布式架构是解决高并发问题的主要方法。在实际应用中,需要根据具体情况选择不同的方法来解决高并发问题。在高并发情况下,使用负载均衡是解决问题的一种常见方法。负载均衡可以通过将请求分配到多个服务器上,从而减少单个服务器的负载。这可以通过硬件设备或软件实现。

BUG制造者:图图 <p>这是一个P标签</p> 3905

【数据结构】——二叉树详解

二叉树(Binary Tree)是由n个结点构成的有限集(n≥0),n=0时为空树,n>0时为非空树。对于非空树TTT有且仅有一个根结点;除根结点外的其余结点又可分为两个不相交的子集TLT_LTL​和TRT_RTR​,分别称为TTT的左子树和右子树,且TLT_LTL​和TRT_RTR​本身又都是二叉树。很明显该定义属于递归定义,所以有关二叉树的操作使用递归往往更容易理解和实现。从定义也可以看出二叉树与一般树的区别主要是两点,一是每个结点的度最多为2;

atwdy的博客 6万+

寻迹Arduino智能小车

Arduino巡线寻迹智能小车

Rachael_Wang的博客 1万+

二叉树、红黑树、BTree等数据结构生成和演算的站点推荐

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

宇飞林海的博客 827

OpenGL计算着色器工作组设置测试

先看看不同的显卡上工作组的数量情况。 glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 0, data); glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 1, data + 1); glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_COUNT, 2, data...

qq_26328385的博客 1485

单细胞测序数据整合

基于Seurat 联合harmony进行单细胞数据整合分析

G2530051386的博客 9793

二叉树的构造和相关功能的代码实现及解析

Essential C++ -- 二叉树的构造和相关功能的代码实现及解析(二叉树类的定义,构造二叉树,向二叉树插入节点,移除根节点,移除二叉树中某值对应的节点,清空二叉树,三种遍历二叉树的方法)

GodFishhh的博客 1292

卡方检验的隐藏逻辑:为什么正态分布的平方和如此重要?

本文深入探讨了卡方检验的核心逻辑,揭示了正态分布平方和在统计检验中的重要性。通过分析卡方分布与伽马分布的关系,以及实际应用案例,帮助读者理解卡方检验的原理、局限及高级应用场景,为数据分析提供有力工具。

3a9bq4r8t2y的博客 208

二叉树 构造 -- 搞懂各种遍历构造二叉树

首先,我们要清晰构造二叉树最基本的思路: ==分解问题== 构造完整的二叉树 =》==分解为递归构造== 根节点 + 左子树 + 右子树

weixin_42445439的博客 1303

数字电视中的AD(Audio Description)音频描述技术详解

AD(Audio Description)音频描述是一种辅助技术,旨在帮助视障人士更好地理解视觉内容。通过在节目或视频的自然停顿处插入额外的语音叙述来解释屏幕上的视觉信息,如人物动作、场景变化、文字说明等,从而让视力受损的人士也能获得完整的观影体验。AD服务不仅限于电视广播,也广泛应用于电影、剧院表演、在线视频平台等领域。PID:用于标识和区分不同的音频流。PMT表:提供每个音频流的详细信息,包括PID、编解码器类型和语言代码。时间戳:PTS和DTS用于同步音频与视频内容。解复用。

以实战经验介绍行业知识 744

SMPLify-x-master | 复现记录

由于毕业设计中将会用到smpl模型,而smplify方法的各环境依赖版本比较老,复现不太容易,因此便进行了smplifyx方法使用smplx的方法。由于在过程中遇到较多坑,因此进行记录和分享。

qq_44916003的博客 5100

由遍历序列构造二叉树

/** *    实验题目: *        由遍历序列构造二叉树 *    实验目的: *        领会二叉树的构造过程以及构造二叉树的算法设计 *    实验内容: *        设计程序,实现由先序序列和中序序列以及由中序序列和后序序列构造 *    一颗二叉树的功能(二叉树中每个结点值为单个字符)。要求以括号表示法和 *    凹入表示法输出该二叉树。并用先序遍历序列"A B ...

xiezhi123456的博客 5537

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【算法思想·二叉树】构造篇

二叉树的构造问题一般都是使用「分解问题构造整棵树 = 根节点 + 构造左子树 + 构造右子树。

Captain823Jack的博客 954

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

反向构造二叉树、树转二叉树

反向构造二叉树是已知二叉树的前序、中序、后续遍历结果或层次遍历结果其中的2种,反推二叉树的构造。一般考试形式:给与至少2种遍历结果要求画出二叉树;或者给与2种遍历结果求出剩余某种遍历结果。大致可归为一类题型。例题由前序序列为ABHFDECG;中序序列为HBEDFAGC构造二叉树。①前序序列是首先遍历根节点,其次遍历左子树,最后是右子树;所以根据前序序列可以确定二叉树的根节点是A;②中序序列是首先遍历左子树,其次遍历根节点,最后是右子树;

m0_55661792的博客 1335

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

二叉树(构造篇)

二叉树(纲领篇),先复述一下前文总结的二叉树解题总纲:二叉树的构造问题一般都是使用「分解问题」的思路:构造整棵树 = 根节点 + 构造左子树 + 构造右子树。力扣第 654 题「 最大二叉树」 每个二叉树节点都可以认为是一棵子树的根节点,对于根节点,首先要做的当然是把想办法把自己先构造出来,然后想办法构造自己的左右子树。所以,我们要遍历数组把找到最大值 ,从而把根节点 做出来,然后对 左边的数组和右边的数组进行递归构建,作为 的左右子树。 通过前序和中序遍历结果构造二叉树 力扣第 105 题「 从前

c630843901的博客 6474

有4个节点可以构造出 二叉树_构造二叉树和二叉树遍历

一、构造二叉树①:在数据结构中,我们一般都会有这样的题目:由(前序和中序)或者(后序跟中序),画出该二叉树,我先说前序和中序的:我们只需要记住前序的作用就是可以由前序知道下一个根节点是谁,由中序知道该根节点的左右孩子结点是谁?下面直接用例子讲最通俗易懂的了:例:前序和中序,构造二叉树下面还有两个例子,你们可以尝试做一下:1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L...

weixin_35390057的博客 4168

二叉树的构造(C++)

已知先序序列(preorder)和中序序列(inorder),构造出的二叉树是唯一的。 已知后序序列(postorder)和中序序列(inorder),构造出的二叉树是唯一的。 先序、中序序列构造二叉树,然后先序遍历: #include <cstdio> #include <vector> using namespace std; //声明结点 struct nod...

一只在校程序猿的技术贴 5572

二叉树-构造二叉树

构造二叉树的过程,如何正确的写出各个子序列的边界是有些困难的,需要在稿纸上认真分析整个过程,确保边界不出错。两种构造方式代码略有不同,对于前序序列的处理,每次递归时都会往后移动一步,因为根结点已经处理过了,避免重复处理。//后移一步后序序列的根结点处理是通过修改后序序列的长度,避免重复处理根结点。//后序遍历序列减1。

qq_53280985的博客 1350

二叉树的遍历与构造

一、遍历唉,好想回家,我想回家跟馒头酱玩,想老爸老妈。如果上天再给我一次选择的机会,我会选择当一只小动物,或者当棵大树也好,或者我希望自己不要有那么多多余的情绪,不要太被别人影响,开心点,想睡就睡,想玩就玩,不要为难自己。老爸每次都和我说累了就回家,但越是这样我就越希望自己变得更强大一点。希望明天是个好天气。一、遍历。

hello77的blogggg 祝你得偿所愿 1375

构造二叉树

105. 从前序与中序遍历序列构造二叉树 给定一棵树的前序遍历preorder与中序遍历inorder。请构造二叉树并返回其根节点。 Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] 示例 2: Input: preorder = [-1], inorder = [-1] Output: [-1] 来源:力扣(LeetCode) 链接:https://leet...

asa134124的博客 823
上一篇: c++ 数组指针的使用
kotomi_du
博客等级 码龄10年 5粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值