LeetCode Hot100 105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树

LeetCode Hot100 105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树_第1张图片

 分析:构造树可以用递归的方法来根据条件构造:(主要是考虑好递归的边界问题)
            1.从前序数组里可以知道preorder[0]为根节点
            2.在中序数组中找到preorder[0]的位置坐标,即preorder[0]==inorder[i]
            3.1~i是前序左子树范围 i+1~preorder.length -1 是前序右子树范围
            4.0~i-1是中序左子树范围i+1~inorder.length -1 是中序右子树范围

    public TreeNode buildTree(int[] preorder, int[] inorder) {
        // 递归中止条件:树为空
        if(inorder.length == 0 || preorder.length == 0) {
          return null;
        }
        // 根节点的值为前序遍历的第一个元素值
        // 创建根节点
        TreeNode root = new TreeNode(preorder[0]);

        for(int i=0 ;i

根据中序和后序数组构造树的话大同小异,

 

    public TreeNode buildTree(int[] inorder, int[] postorder) {
        // 递归中止条件:树为空
        if(inorder.length == 0 || postorder.length == 0) {
          return null;
        }
        // 根节点的值为前序遍历的第一个元素值
        // 创建根节点
        TreeNode root = new TreeNode(postorder[postorder.length - 1]);

        for(int i=0 ;i

你可能感兴趣的:(leetcode,算法,java,树结构)