zoukankan      html  css  js  c++  java
  • 重建二叉树

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

    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);
            }
        }
    }
  • 相关阅读:
    寒假第七天
    寒假第六天
    寒假第五天
    寒假第四天
    leetcode 105 从前序与中序遍历序列构造二叉树
    leetcode 268 丢失的数字
    leetcode 141 环形链表
    判断顶点是否在三角形内部
    java 基本数据类型
    leetcode 20 有效的括号
  • 原文地址:https://www.cnblogs.com/xidongyu/p/6986626.html
Copyright © 2011-2022 走看看