105. Construct Binary Tree from Preorder and Inorder Travers
发布时间:2020-12-14 05:13:21 所属栏目:大数据 来源:网络整理
导读:/** * 105. Construct Binary Tree from Preorder and Inorder Traversal * * https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/ * * Given preorder and inorder traversal of a tree,construct the
/** class Solution {
class TreeNode(var `val`: Int = 0) {
var left: TreeNode? = null;
var right: TreeNode? = null;
}
fun buildTree(preorder: IntArray,inorder: IntArray): TreeNode? {
if (preorder.isEmpty() || inorder.isEmpty())
return null;
val map = HashMap<Int,Int>();
for ((index,element) in inorder.withIndex()) {
map.put(element,index);
}
return help(preorder,preorder.size - 1,inorder,inorder.size - 1,map);
}
fun help(
preorder: IntArray,pLeft: Int,pRight: Int,inorder: IntArray,iLeft: Int,iRight: Int,map: HashMap<Int,Int>
): TreeNode? {
if (pLeft > pRight || iLeft > iRight)
return null;
val node = TreeNode(preorder[pLeft]);
val rootIndex:Int = map.get(preorder[pLeft])!!;//not-null assertion operator:!! convert Int? to Int
node.left = help(preorder,pLeft+1,pLeft+rootIndex-iLeft,iLeft,rootIndex-1,map);
node.right = help(preorder,pLeft+rootIndex-iLeft+1,pRight,rootIndex+1,iRight,map);
return node;
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
