18. 重建二叉树

图片说明

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */


class Solution {
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        int ps = 0;
        int is = 0;
        int pe = preorder.length-1;
        int ie = inorder.length-1;
        return creatTree(preorder,ps , pe ,inorder,is,ie);
    }
    public TreeNode creatTree(int []preorder,int ps ,int pe ,int []inorder,int is,int ie) {
        if(ps>pe)return null;
        int temp = preorder[ps];
        TreeNode node = new TreeNode(temp);
        int k = 0;
        while(k<inorder.length) {
            if(temp == inorder[k])break;
            k++;
        }
        node.left = creatTree(preorder, ps+1 ,ps+k-is ,inorder,is ,k-1);
        node.right = creatTree(preorder, ps+k-is+1 ,pe ,inorder,k+1 ,ie);
        return node;
    }
}
全部评论

相关推荐

10-25 22:20
门头沟学院 Java
代码飞升_不回私信人...:同学院本,个人亮点去了,打招呼里面的废话也去了,学院本就是路边一条,明天拉满然后该学还是学,小厂也行尽量先有一段实习。另外你的项目描述写的不好,具体列一下可被提问的点,然后量化一下指标或者收益吧
投了多少份简历才上岸
点赞 评论 收藏
分享
少年郎as:这不把公司名贴出来那我可要喷你了哦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务