zoukankan      html  css  js  c++  java
  • 给定二叉树先序、中序遍历序列,求后序遍历


    给定一个二叉树的前序遍历和中序遍历的序列,输出对应这个二叉树的后续遍历序列。

    输入描述:
    输入为一行。
    两个字符串,分别表示二叉树的前序遍历和中序遍历结果,用空格分隔。保证数据合法
    输出描述:
    对应输出后序遍历序列
    示例1

    输入

    ABDEC DBEAC
    

    输出

    DEBCA
    思路:先根据先序、中序序列建立二叉树,然后后序遍历
    import java.util.Scanner;
     
    import javax.print.attribute.standard.PresentationDirection;
     
     class TreeNode {
         char val;
         TreeNode left;
         TreeNode right;
         TreeNode(char x) { val = x; }
     }
      
    public class Main {
        public static  String preStr;
        public static String midStr;
         
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Scanner sc = new Scanner(System.in);
            String s = sc.nextLine();
            int pos = s.indexOf(" ");
            preStr = s.substring(0,pos);
            midStr = s.substring(pos+1,s.length());
            //System.out.println("pre:"+preStr);
            //System.out.println("midS:"+midStr);
            TreeNode rs = creat(preStr,0,preStr.length()-1,midStr,0,midStr.length()-1);
            rView(rs);
        }
        public static void rView(TreeNode root){
            if(root!=null){
                rView(root.left);
                rView(root.right);
                System.out.print(root.val);
            }
        }
        public static TreeNode creat(String preStr,int pstart,int pend,String midStr,int mstart,int mend){
            if(mstart>mend||pstart>pend) return null;
            char[] cmidStr= midStr.toCharArray();
            char[] cpreStr=preStr.toCharArray();
            TreeNode root = new TreeNode(cpreStr[pstart]);
            for(int i = mstart;i<=mend;i++)
                if(cmidStr[i]==cpreStr[pstart]){
                    int len = i-mstart;
                     
                    root.left = creat(preStr,pstart+1,pstart+len,midStr,mstart,i-1);
                    root.right = creat(preStr,pstart+len+1,pend,midStr,i+1,mend);
                }
                return root;   
        }
     
    }
  • 相关阅读:
    每天一个linux命令:top命令
    docker入门实战笔记
    Linux top里面%CPU和us%的解释
    mac开发环境配置
    TCP/IP及内核参数优化调优
    在C#中使用代理的方式触发事件(转,这篇应该是最好的)
    如何在Vista IIS 7 中用 vs2005 调试 Web 项目? (转)
    C#接口慨述
    asp跟asp.net的区别
    解耦的故事(一)tmfc的开关(转)
  • 原文地址:https://www.cnblogs.com/Keven02/p/7456834.html
Copyright © 2011-2022 走看看