add new solutions

This commit is contained in:
kanna5 2025-12-31 15:14:22 +09:00
parent 71189b61cf
commit 9c2c959a9b
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
10 changed files with 349 additions and 8 deletions

View file

@ -0,0 +1,43 @@
package q102
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func levelOrder(root *TreeNode) [][]int {
if root == nil {
return [][]int{}
}
ret := [][]int{}
type qElem struct {
lvl int
node *TreeNode
}
curLvl := 0
curLvlNodes := []int{}
queue := []qElem{{0, root}}
for ; len(queue) > 0; queue = queue[1:] {
cur := &queue[0]
if cur.lvl != curLvl {
ret = append(ret, curLvlNodes)
curLvlNodes = []int{cur.node.Val}
curLvl = cur.lvl
} else {
curLvlNodes = append(curLvlNodes, cur.node.Val)
}
if cur.node.Left != nil {
queue = append(queue, qElem{lvl: cur.lvl + 1, node: cur.node.Left})
}
if cur.node.Right != nil {
queue = append(queue, qElem{lvl: cur.lvl + 1, node: cur.node.Right})
}
}
ret = append(ret, curLvlNodes)
return ret
}
var _ = levelOrder