【二叉树】Leetcode 105. 从前序与中序遍历序列构造二叉树【中等】

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

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

示例1:
【二叉树】Leetcode 105. 从前序与中序遍历序列构造二叉树【中等】_第1张图片

输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
输出: [3,9,20,null,null,15,7]

解题思路

根据给定的前序遍历和中序遍历序列构造二叉树,可以通过递归的方式来实现。

  • 1、前序遍历序列的第一个节点是根节点,在中序遍历序列中找到根节点的位置,将中序遍历序列分为左子树序列和右子树序列。
  • 2、根据左子树序列和右子树序列的长度,将前序遍历序列也分为左子树序列和右子树序列。
  • 3、分别递归构造左子树和右子树,并连接到根节点上。

Java实现

public class ConstructBinaryTree {
   

    static class TreeNode {
   
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int val) {
   
            this.val = val;
        }
    }

    public TreeNode buildTree(int[] preorder, int[] inorder) {
   
        if (preorder == null || inorder == null || preorder.length != inorder.length || preorder.length == 

你可能感兴趣的:(算法,leetcode,算法)