fix build_tree, binary_search_tree.cs

fix two figures
This commit is contained in:
krahets
2023-09-15 02:08:09 +08:00
parent af2aeb0897
commit cb9c14f5ff
13 changed files with 69 additions and 72 deletions
@@ -7,7 +7,7 @@
import utils
/* */
func dfs(preorder: [Int], inorder: [Int], hmap: [Int: Int], i: Int, l: Int, r: Int) -> TreeNode? {
func dfs(preorder: [Int], inorderMap: [Int: Int], i: Int, l: Int, r: Int) -> TreeNode? {
//
if r - l < 0 {
return nil
@@ -15,11 +15,11 @@ func dfs(preorder: [Int], inorder: [Int], hmap: [Int: Int], i: Int, l: Int, r: I
//
let root = TreeNode(x: preorder[i])
// m
let m = hmap[preorder[i]]!
let m = inorderMap[preorder[i]]!
//
root.left = dfs(preorder: preorder, inorder: inorder, hmap: hmap, i: i + 1, l: l, r: m - 1)
root.left = dfs(preorder: preorder, inorderMap: inorderMap, i: i + 1, l: l, r: m - 1)
//
root.right = dfs(preorder: preorder, inorder: inorder, hmap: hmap, i: i + 1 + m - l, l: m + 1, r: r)
root.right = dfs(preorder: preorder, inorderMap: inorderMap, i: i + 1 + m - l, l: m + 1, r: r)
//
return root
}
@@ -27,8 +27,8 @@ func dfs(preorder: [Int], inorder: [Int], hmap: [Int: Int], i: Int, l: Int, r: I
/* */
func buildTree(preorder: [Int], inorder: [Int]) -> TreeNode? {
// inorder
let hmap = inorder.enumerated().reduce(into: [:]) { $0[$1.element] = $1.offset }
return dfs(preorder: preorder, inorder: inorder, hmap: hmap, i: 0, l: 0, r: inorder.count - 1)
let inorderMap = inorder.enumerated().reduce(into: [:]) { $0[$1.element] = $1.offset }
return dfs(preorder: preorder, inorderMap: inorderMap, i: 0, l: 0, r: inorder.count - 1)
}
@main