[LeetCode] 根据前序序列和中序序列重建二叉树

来源:互联网 发布:美利坚仓储淘宝王无错 编辑:程序博客网 时间:2024/06/05 03:10

LeetCode 链接: 根据前序和中序序列重建二叉树

思路:

1、根据先序向量数组的值把中序向量数组一分为二,然后递归左右部分;
2、设置全局 index 索引,作为先序遍历向量的下标,每次递归左子树之后减一。


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    private int index = -1 ;public TreeNode buildTree(int[] preorder, int[] inorder) {        return btConstruct(preorder, inorder, 0, preorder.length - 1) ;    }public TreeNode btConstruct(int[] preorder, int[] inorder, int l, int r) {index ++ ;if(l > r || r > preorder.length) {return null ;}TreeNode root = new TreeNode(preorder[index]) ;int j ;for(j = l; j <= r; j ++) {if(preorder[index] == inorder[j]) {break ;}}if(j <= r) {root.left = btConstruct(preorder, inorder, l, j - 1) ;index -- ;root.right = btConstruct(preorder, inorder, j + 1, r) ;}return root ;}}


0 0
原创粉丝点击