leetcode

    xiaoxiao2021-03-25  94

    题意:

    给一个二叉树的前序遍历和中序遍历结果,构造出这棵树。

    分析:

    分析同上一篇。

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { if(preorder.length==0 || inorder.length==0) return null; return helper(preorder, inorder, 0, 0, inorder.length-1); } private TreeNode helper(int[] preorder, int[] inorder, int rootindex, int start, int end){ if(start > end){ return null; } int rootval = preorder[rootindex]; TreeNode root = new TreeNode(rootval); int index = findRootInInorder(rootval, inorder, start, end); int leftsize = index - start; root.left = helper(preorder, inorder, rootindex+1, start, index-1); root.right = helper(preorder, inorder, rootindex+1+leftsize, index+1, end); return root; } private int findRootInInorder(int rootval, int[] inorder, int start, int end){ for(int i=start; i<=end; i++){ if(inorder[i] == rootval){ return i; } } return -1; } }

    转载请注明原文地址: https://ju.6miu.com/read-16107.html

    最新回复(0)