LeetCode Construct Binary Tree from Inorder and Postorder Traversal

来源:互联网 发布:nseer erp 源码下载 编辑:程序博客网 时间:2024/06/06 03:56

Description:

Given inorder and postorder traversal of a tree, construct the binary tree.

Solution:

和前一道题目类似,不过这里的len表示的是当前根节点的右子树。

中序:(左子树)(根节点)(len长度的右子树)

后序:(左子树)(len长度的右子树)(根节点)

import java.util.*;public class Solution {int[] inorder;int[] postorder;int n;public TreeNode buildTree(int[] inorder, int[] postorder) {this.inorder = inorder;this.postorder = postorder;int n = inorder.length;return dfs(0, n - 1, 0, n - 1);}TreeNode dfs(int inStart, int inEnd, int postStart, int postEnd) {if (inStart > inEnd)return null;int inMiddle = inStart;for (int i = inStart; i <= inEnd; i++) {if (inorder[i] == postorder[postEnd]) {inMiddle = i;break;}}int len = inEnd - inMiddle;TreeNode root = new TreeNode(postorder[postEnd]);root.left = dfs(inStart, inMiddle - 1, postStart, postEnd - 1 - len);root.right = dfs(inMiddle + 1, inEnd, postEnd - len, postEnd - 1);return root;}}


0 0
原创粉丝点击