前序中序求后序的java算法是怎样的
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,前序中序求后序的java算法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子
千家信息网最后更新 2025年02月05日前序中序求后序的java算法是怎样的
前序中序求后序的java算法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子树,先访问跟,然后遍历其左子树,最后遍历其右子树;中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树;后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)。变量条件:二叉树中的结点名称以大写字母表示:A,B,C....最多26个结点。运行时限:1秒/测试数据。输入格式:两行,第一行为前序遍历,第二行为中序遍历。输出格式:若不能根据前序和中序遍历求出后序遍历,输出NO ANSWER;否则输出一行,为后序遍历。
/** * 前序遍历:GDAFEMHZ * 中序遍历:ADEFGHMZ * * * 两个步骤: 根据前序中序,构造二叉树 后序遍历二叉树 * 根据前序遍历的特点得知,根结点为G * 根结点将中序遍历结果ADEFGHMZ分成ADEF和HMZ两个左子树、右子树。 * 递归确定中序遍历序列ADEF和前序遍历序列DAFE的子树结构; * 递归确定中序遍历序列HMZ和前序遍历序列MHZ的子树结构; */public class PostOrder{ public static void main(String[] args) throws Exception{// Scanner in = new Scanner(System.in);// String pre,mid;// while(in.hasNext()){// pre = in.next();// mid = in.next();// System.out.println(postOrder(pre,mid));// } String pre = "ABDGCEFH"; String mid = "DGBAECHF"; System.out.println(postOrder(pre,mid)); } private static String postOrder(String pre, String mid) throws Exception{ if(pre.length() == 1) return pre; else if(pre.length() == 0) return ""; int m = mid.indexOf(pre.charAt(0)); return postOrder(pre.substring(1,m+1 ),mid.substring(0, m)) + postOrder(pre.substring(m+1),mid.substring(m+1)) + pre.charAt(0); }}
/** * 中序遍历:ADEFGHMZ * 后序遍历:AEFDHZMG * * * 后序遍历最后一个结点即为根结点,即 根结点为G */public class PreOrder { public static void main(String[] args) throws Exception{ String post = "AEFDHZMG"; String mid = "ADEFGHMZ"; System.out.println(preOrder(post,mid)); } private static String preOrder(String post, String mid) throws Exception{ if(post.length() == 1) return post; else if(post.length() == 0) return ""; int m = mid.indexOf(post.charAt(post.length() - 1)); return post.charAt(post.length() - 1) + preOrder(post.substring(post.length() - mid.length(),m),mid.substring(0,m)) + preOrder(post.substring(m,post.length() - 1),mid.substring(m+1)); }}
看完上述内容,你们掌握前序中序求后序的java算法是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
子树
结点
序列
任一
输出
算法
一行
两个
内容
方法
更多
格式
结构
问题
递归
束手无策
为此
原因
变量
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库怎么插到另一个表格
智阳网络技术有限公司
vr软件开发专家
广州软件开发一般工资多少
小白学软件开发
中北大学查分软件开发
医院网络安全职能
csgo上游戏不显示服务器切换
小学校长网络安全讲话
建筑标准规范数据库
发生危害网络安全事件的诱因
mac如何创建数据库
潜力的聊天软件开发
审计局 网络安全应急团队
杭州云创共和互联网科技有限公司
x79主板服务器内存条
英雄联盟几个赛区服务器
哪吒汽车的软件开发商是谁
金仓数据库创建数据库语句
双网络技术
管理学中的数据库
山东校盟互联网科技有限公司
服务器可以插3根内存吗
网络安全攻防竞赛题目
大学网络安全实验
vpn服务器 2003
连接数据库未知错误
英雄联盟几个赛区服务器
木工服务器如何使用教程
软件开发有限公司如何