• 重建二叉树


    要求:根据提供的先序和中序遍历结果,输出后序遍历结果

    public class Test{
    	public static void main(String[] args) {
    		int[] preOrder = {1, 2, 3, 4, 5, 6};
    		int[] midOrder = {3, 2, 4, 1, 6, 5};
    		printPostOrder(preOrder, midOrder);
    	}
    	 
    
    	static void  printPostOrder(int[] preOrder, int[] midOrder) {
    		Node root = constructTree(preOrder, 0, preOrder.length, midOrder, 0, midOrder.length-1);
    		postOrder(root);
    	}
    	
    	//preStart-preEnd一定等于midStart-midEnd
    	static private Node constructTree(
    			int[] preOrder, int preStart, int preEnd,
    			int[] midDorder, int midStart, int midEnd) {
                    if (preStart > preEnd || midStart > midEnd)
                        return null;
    
    		Node node = new Node();
    		node.val = preOrder[preStart];
    		int local = 0;
    		for (int i=midStart; i<=midEnd; i++)
    			if (midDorder[i] == node.val) {
    				local = i;
    				break;
    			}
    		int len1 = local - midStart;
    		node.LChild = constructTree(preOrder, preStart+1, preStart+len1,
    					midDorder, midStart, local-1);
    		node.RChild = constructTree(preOrder, preStart+len1+1, preEnd,
    				midDorder, local+1, midEnd);
    		return node;
    	}
    	
    	static class Node {
            int val;
            Node LChild;
            Node RChild;
    	}
    	
    	static private void postOrder(Node _root) {
            if (_root != null) {
                postOrder(_root.LChild);
                postOrder(_root.RChild);
                System.out.print(_root.val);
            }
        }
    }
  • 相关阅读:
    雨中梦游
    最后一次为你哭
    poj3169 Layout
    poj2253 Frogger
    钟爱一生
    POJ2668解题报告
    魅力泸西
    android学习笔记09(activity的生命周期)
    poj 3468 A Simple Problem with Integers
    android学习笔记之多线程(二)
  • 原文地址:https://www.cnblogs.com/xidongyu/p/6986626.html
Copyright © 2020-2023  润新知