zoukankan      html  css  js  c++  java
  • 让我们来写个算法吧,(6)重建二叉树

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

    public class Solution {
        
    
        public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
           
            return create(pre,0,pre.length-1,in,0,in.length-1);
            
        }
        
        private TreeNode create(int[] pre, int startPre, int endPre, int[] in, int startIn, int endIn) {
            // TODO Auto-generated method stub
            if(startPre>endPre||startIn>endIn)
            {
                return null;
            }
            TreeNode root=new TreeNode(pre[startPre]);
            for(int i=startIn;i<=endIn;i++)
            {
                if(pre[startPre]==in[i])
                {
                    
                    root.left=create(pre,startPre+1,startPre+i-startIn,in,startIn,i-1);
                    root.right=create(pre,startPre+i-startIn+1,endPre,in,i+1,endIn);
                    break;
                }
                
                
            }
            
            return root;
            
        }
  • 相关阅读:
    [HNOI2008] Cards
    loj #136
    a problem
    dp * 3
    STL
    套题1
    luogu 4211
    loj #2319
    loj #2316
    luogu 1144
  • 原文地址:https://www.cnblogs.com/leaveast/p/12518111.html
Copyright © 2011-2022 走看看