add new solutions
This commit is contained in:
parent
71189b61cf
commit
9c2c959a9b
10 changed files with 349 additions and 8 deletions
43
solutions/1/q102/solution.go
Normal file
43
solutions/1/q102/solution.go
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue