题解 | #从中序与后序遍历序列构造二叉树#

从中序与后序遍历序列构造二叉树

http://www.nowcoder.com/practice/ab8dde7f01f3440fbbb7993d2411a46b

这个题的思路是和根据中前遍历重建二叉树类似的。因为后续遍历的最后一个元素总是根节点,那么只需要先找到后序遍历中的根节点,再把数组分为左右两个区间就能找到左子树与右子树。

public class Solution {
    public TreeNode buildTree (int[] inorder, int[] postorder) {
        if(postorder.length==0)return null;
        TreeNode root = new TreeNode(postorder[postorder.length-1]);
        for(int i=0;i<inorder.length;++i){
            if(root.val==inorder[i]){
                root.left = buildTree(
                    Arrays.copyOfRange(inorder,0,i),
                    Arrays.copyOfRange(postorder,0,i)
                ); 
                root.right = buildTree(
                    Arrays.copyOfRange(inorder,i+1,inorder.length),
                    Arrays.copyOfRange(postorder,i,inorder.length-1)
                );
                return root;
            }
        }
        return root;
    }
}
全部评论

相关推荐

10-15 10:23
门头沟学院 Java
牛可乐的头像真牛:赶紧举报,这公司绝对是诈骗的,等你签约后工作一两个月后根据合同漏洞把你开除,并且要求你赔偿3w培训费,996是为了提前筛选心甘情愿签下合同容易受骗的群体,纯粹面向校招生精心设计的骗局
你见过哪些工贼行为
点赞 评论 收藏
分享
少年郎as:这不把公司名贴出来那我可要喷你了哦
点赞 评论 收藏
分享
评论
11
收藏
分享

创作者周榜

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