add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent 9c2c959a9b
commit 9a10695e8c
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
29 changed files with 1074 additions and 2 deletions

View file

@ -0,0 +1,35 @@
package q105
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func bld(preorder []int, inorder map[int]int, pL, pR, iL, iR int) *TreeNode {
if pL == pR {
return nil
}
val := preorder[pL]
p := inorder[val] // position of val in "inorder"
left := bld(preorder, inorder, pL+1, pL+1+p-iL, iL, p)
right := bld(preorder, inorder, pL+1+p-iL, pR, p+1, iR)
return &TreeNode{
Val: val,
Left: left,
Right: right,
}
}
func buildTree(preorder []int, inorder []int) *TreeNode {
iIdx := make(map[int]int, len(inorder))
for i := range inorder {
iIdx[inorder[i]] = i
}
return bld(preorder, iIdx, 0, len(preorder), 0, len(preorder))
}
var _ = buildTree