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);
            }
        }
    }
  • 相关阅读:
    自定义 alert 弹窗
    js控制div内的滚动条的位置
    vue 的 起手式
    d3.js封装文本实现自动换行和旋转平移等功能
    redux
    mui 本地打包
    vue-router 运行机制 及 底层原理
    替代 Navigator 组件
    react-native 创建 ios 项目
    三元运算符
  • 原文地址:https://www.cnblogs.com/xidongyu/p/6986626.html
Copyright © 2011-2022 走看看