Java constructs a binary tree based on preorder and inorder traversal sequences

Construct a binary tree based on preorder and inorder traversal sequences

Problem Description

Given two integer arrays preorder and inorder, where preorder is the preorder traversal of a binary tree and inorder is the inorder traversal of the same tree, construct a binary tree and return its root node.

1 <= preorder.length <= 3000
inorder.length == preorder.length
-3000 <= preorder[i], inorder[i] <= 3000
preorder 和 inorder 均 无重复 元素
inorder 均出现在 preorder
preorder 保证 为二叉树的前序遍历序列
inorder 保证 为二叉树的中序遍历序列。

example

insert image description here

Original title OJ link

https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/

answer code

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    
    
    public TreeNode buildTree(int[] preorder, int[] inorder) {
    
    
        int inbegin = 0;
        int inend = inorder.length-1;
        return buildTreeChild(preorder,inorder,inbegin,inend);

    }
    public int i = 0;
    public TreeNode buildTreeChild(int[] preorder,int[] inorder,int inbegin,int inend){
    
    
        if(inbegin>inend){
    
    
            return null;
        }
        TreeNode root = new TreeNode(preorder[i]);
        int rootIndex = findIndex(inorder,inbegin,inend,preorder[i]);
        i++;
        root.left = buildTreeChild(preorder,inorder,inbegin,rootIndex-1);
        root.right = buildTreeChild(preorder,inorder,rootIndex+1,inend);

        return root;

    
    }
    private int findIndex(int[] inorder,int inbegin,int inend,int k){
    
    
        int j = inbegin;
        for(j = inbegin;j<= inend;j++){
    
    
            if(inorder[j] == k){
    
    
                return j;
            }
        }
        return -1;
    }
}

Guess you like

Origin blog.csdn.net/baixian110/article/details/130960301