• 二叉树重建-递归


    package JianZhioffer;
    // 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
    //递归,进入helperZ之前用整体进入后分左右
    public class test07 {
        public static void main(String[] args) {
           int []preorder={3,9,20,15,7};
           int []inorder={9,3,15,20,7};
           TreeNode tr=buildTree(preorder, inorder);
           int x=0;
        }
        public static TreeNode buildTree(int[] preorder, int[] inorder) {
            if(preorder.length==0||inorder.length==0){
                return null;
            }
            
            TreeNode result=helper(0, preorder.length-1, 0,inorder.length-1,preorder, inorder);
            return result;
        }
        public static TreeNode helper(int prestart,int preend,int instart,int inend,int []preorder,int []inorder){
            
            if( prestart>preend){
                return null;
            }
            TreeNode tr=new TreeNode(preorder[prestart]);
            if(prestart==preend){
                return tr;
            }
            
            int r=preorder[prestart];
            int k=0;
            for(int i=instart;i<=inend;i++){
                if(inorder[i]==r){
                    k=i;
                    break;
                }
            }
            int x=k-instart;
            int y=inend-k;
            tr.left=helper(prestart+1, prestart+x,instart,k-1, preorder, inorder);
            tr.right=helper(preend-y+1, preend,k+1,inend, preorder, inorder);
    
            return tr;
        }
    }
  • 相关阅读:
    兼容IE的滚动条自定义样式
    vue从入门到开发--4--处理http请求
    vue从入门到开发--3-基础语法
    Oracle 扩容表空间
    Oracle 整库备份还原
    Oracle 相关命令
    更改mysql数据库根目录
    关于文件系统
    挂载iscsi存储
    挂载nfs存储
  • 原文地址:https://www.cnblogs.com/jieyi/p/14201706.html
Copyright © 2020-2023  润新知