您的位置:首页 > 编程语言 > Python开发

leetcode 105 Construct Binary Tree from Preorder and Inorder Traversal

2018-03-14 14:46 453 查看
Java:class Solution {
public TreeNode buildTree(int[] preorder, int[] inorder) {
return build(preorder, 0, inorder, 0, inorder.length-1);
}

public TreeNode build(int[] preorder, int pre_str, int[] inorder, int in_str, int in_end){
if(pre_str > preorder.length-1 || in_str > in_end) return null;
int index = 0;
TreeNode root = new TreeNode(preorder[pre_str]);
for(int i=in_str; i<=in_end; i++){
if(inorder[i] == root.val){
index = i;
break;
}
}
root.left = build(preorder, pre_str+1, inorder, in_str, index-1);
root.right = build(preorder, pre_str+index-in_str+1, inorder, index+1, in_end);
return root;
}
}Python:class Solution:
def buildTree(self, preorder, inorder):
"""
:type preorder: List[int]
:type inorder: List[int]
:rtype: TreeNode
"""
if inorder:
beg = preorder.pop(0)
#.index是否包含字符
ind = inorder.index(beg)
root = TreeNode(inorder[ind])
root.left = self.buildTree(preorder, inorder[0:ind])
root.right = self.buildTree(preorder, inorder[ind+1:])
return root
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:   leetcode java python
相关文章推荐