二叉树由后序(LRD)和中序(LDR)得到前序(DLR)

具体代码

/*
DCBHKGFEA 后序
BDCAEHGkF 中序
ABCDEFGHK 前序思路:根据后序找根节点->分割中序->在分割出来的中序里继续找根节点.............*/#include<iostream>
#include<string>
using namespace std;void MidSplitToTwoArray(const int mid, const string zhongxv, string &midleft, string &midright)//分割中序字符串
{for (int i = 0; i < zhongxv.size(); i++){if (i < mid)midleft = midleft + zhongxv[i];if (i > mid)midright = midright + zhongxv[i];}//切割中序
}void HouSplitToTwoArray(const int houxvleftsize, const string houxv, string &houleft, string &houright)//切割后序字符串
{for (int i = 0; i <= houxv.size() - 2; i++)//因为最后一位是已经求出来了的根节点{if (i < houxvleftsize)houleft = houleft + houxv[i];if (i >= houxvleftsize)houright = houright + houxv[i];}//切割后序
}void findRoot(string houxv,string zhongxv)//每次都找出根节点,一批一批的找,好像一不小心写成了得到前序的代码(本来还不知道中序后序得到前序是怎么写的...)
{//后序找根节点,中序分割出两个数组//cout << "当前后序:" << houxv<< endl;//cout << "当前中序:" << zhongxv<< endl;int num = houxv.size();cout<< houxv[num - 1];//输出根节点//cout << "          根节点" << houxv[num - 1]<< endl;//输出根节点if (num>1)//还可以继续分割,没结束{int mid=-1;for (int i = 0; i < num; i++){if (zhongxv[i] == houxv[num - 1])//找到中序里面的分割点{mid = i;break;}}string midleft="";//左子树中序string midright="";//右子树中序string houleft="";//左子树后序string houright="";//右子树后序MidSplitToTwoArray(mid,zhongxv,midleft,midright);//切割中序int houxvleftsize = midleft.size();HouSplitToTwoArray(houxvleftsize,houxv,houleft,houright);//切割后序//cout << "houleft:" << houleft << "     midleft:" << midleft << endl;//cout << "houright:" << houright << "       midright:" << midright << endl;//cout << endl;if(midleft.size()!=0 && houleft.size()!=0)//在剩余的节点中重新找根节点findRoot(houleft, midleft);if (midright.size() != 0 && houright.size() != 0)findRoot(houright, midright);}}int main()
{string houxv;string zhongxv;cout << "请输入二叉树的后序遍历:";getline(cin, houxv);cout << "请输入二叉树的中序遍历:";getline(cin, zhongxv);cout << "得到的先序遍历:";findRoot(houxv,zhongxv);//感觉不知不觉写出了 由 后序 中序 得到前序...return 0;
}

程序运行

(2)二叉树由后序(LRD)和中序(LDR)得到前序(DLR)相关推荐

  1. 【二叉树】二叉树的遍历规则(前序遍历、后序遍历、中序遍历)|前/后/中缀表达式...

    转自:https://www.cnblogs.com/turnips/p/5096578.html 今天看了一些关于平和查找二叉树的问题,顺便也复习了一下二叉树的遍历规则,写一下学习文档. 树的遍历顺 ...

  2. 二叉树 —— 创建二叉树 先序遍历 、中序遍历、后序遍历(递归方式、非递归方式)

    #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef char DataType; #de ...

  3. 数据结构与算法之二叉树的先序遍历,中序遍历,后序遍历

    数据结构与算法之二叉树的先序遍历,中序遍历,后移遍历 目录 实现二叉树的先序,中序,后序遍历,包括递归方式和非递归方式 在二叉树中找到一个节点的后继节点 1. 实现二叉树的先序,中序,后序遍历,包括递 ...

  4. C实现二叉树的先序遍历,中序遍历,后序遍历

    1  要创建的二叉树图 2 输出结果图 : 3 完整代码如下: #include<stdio.h> #include<malloc.h>//定义二叉树 typedef stru ...

  5. 【7-10 PAT】树的遍历(给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。)

    题干: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 解题报告: dfs求出这棵树来,然后bfs求层序遍历就行了. AC代码: #include&l ...

  6. 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)

    7-10 先序序列创建二叉树,输出先序序列.中序序列.后序序列并输出叶子结点数 (10 分) 对于给定的二叉树,输出其先序序列.中序序列.后序序列并输出叶子结点数. 输入格式: 二叉树的先序遍历序列. ...

  7. 2018.7.28 二叉树的遍历规则(前序遍历、后序遍历、中序遍历)

    树的遍历顺序大体分为三种:前序遍历(先根遍历.先序遍历),中序遍历(中根遍历),后序遍历(后根遍历). 前序遍历:前序遍历可以记为根左右,若二叉树为空,则结束返回. 前序遍历的规则:(1)访问根节点( ...

  8. 【数据结构笔记10】二叉树的先序、中序、后序遍历,中序遍历的堆栈/非递归遍历算法,层序遍历,确定一个二叉树,树的同构

    本次笔记内容: 3.3.1 先序中序后序遍历 3.3.2 中序非递归遍历 3.3.3 层序遍历 3.3.4 遍历应用例子 小白专场:题意理解及二叉树表示 小白专场:程序框架.建树及同构判别 文章目录 ...

  9. 根据先序序列和中序,后序和中序序列创建二叉树

    思考:如何才能确定一棵树? 结论:    通过中序遍历和先序遍历可以确定一个树                 通过中序遍历和后续遍历可以确定一个树 通过先序遍历和后序遍历确定不了一个树. 算法实现: ...

最新文章

  1. 重磅发布: 阿里云WAF日志实时分析上线 (含视频)
  2. 发布国内首个无服务器容器服务,运维效率从未如此高效
  3. 图解Win32汇编字符串和Debug输出
  4. 2字节取值范围_5G NR 下行同步SSB(2)—PSS和SSS的用途
  5. hadoop 常用hdfs命令
  6. 信息学奥赛一本通 1094:与7无关的数 | OpenJudge NOI 1.5 39
  7. thinkphp v5.0.11漏洞_Thinkphp 5.0远程代码执行漏洞
  8. attention :为什么要用attention机制
  9. MyBatis拦截器原理探究MyBatis拦截器原理探究 1
  10. 梦想——似乎忘记了是什么了
  11. JS中innerHTML 和innerText和value的区别
  12. 2019年大学计算机基础题库,大学计算机基础考试题库(含答案)
  13. 前端框架(混合开发框架)
  14. VMware虚拟机网络设置
  15. 隐私浏览器DuckDuckGo爆出漏洞,可导致URL欺骗攻击
  16. 关机的代码和电脑骚操作
  17. 【方案分享】2021AMII品牌女装抖音直播间运营方案.pptx
  18. host切换工具——SwitchHosts
  19. 导出文件提示rpc服务器不可用,rpc服务器不可用怎么办 RPC服务器不可用解决方法有哪些...
  20. java山海经之轩辕_轩辕传奇手游山海经任务:盘古开天之遂古之初

热门文章

  1. 1-3 5-7的c语言程序,C语言求1-1/3+1/5-1/7+...——小程序,大道理
  2. 成功解决ValueError: Duplicate plugins for name projector
  3. matlab多项式操作
  4. Git, GitHub使用记录
  5. 【appium】appium自动化入门之基本参数完整版(67个appium基本参数和关键字)
  6. asp.net之购物车
  7. vivo手机如何使用非官方手机主题
  8. pyepics Device:PVs的集合
  9. (升级版)基本粒子结构以及宇宙现象的徦说
  10. 少年碎碎念:《WHOLENESS》