前序中序求后序的java算法是怎样的
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,前序中序求后序的java算法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。二叉树的前序、中序、后序遍历的定义:前序遍历:对任一子
千家信息网最后更新 2025年12月03日前序中序求后序的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安全错误
数据库的锁怎样保障安全
apk服务器地址配置
鸿峥网络技术有限公司官网
网络技术人员技能的培养
太原小店新华互联网科技
pb怎么避免一直连数据库
黑龙江医院数显钟服务器
服务器装安全狗有用吗
游戏服务器运营要多少钱
嘉兴车载网络技术常见问题
程序员开发的数据库不见了怎么办
navicat新建pg数据库
河北省网络安全工作会议讲话
郴州学电脑软件开发培训
学生网络技术服务信息推荐
网络安全手抄报小手拉大手一等奖
尹为民数据库原理与技术
去年单招网络安全卷子
日照蚂蚁金服数据库
网络安全专家周正
导航数据库切换
西安交大数据库系统原理课件
武汉财务软件开发
我的世界怎样输入服务器的号码
服务器安装asp.net
华为服务器管理口标志
网络技术ip地址规划设计技术
网络技术与应用期末试
insight数据库
263邮箱邮件服务器
专利专题数据库类型