From bfc7e3ffc08d18ac018297976923b4f29ba4115c Mon Sep 17 00:00:00 2001 From: YDZ Date: Sat, 22 Jun 2019 22:23:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20problems=20102?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../102. Binary Tree Level Order Traversal.go | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Algorithms/0102. Binary Tree Level Order Traversal/102. Binary Tree Level Order Traversal.go b/Algorithms/0102. Binary Tree Level Order Traversal/102. Binary Tree Level Order Traversal.go index e3ea8c87..caf5fca2 100644 --- a/Algorithms/0102. Binary Tree Level Order Traversal/102. Binary Tree Level Order Traversal.go +++ b/Algorithms/0102. Binary Tree Level Order Traversal/102. Binary Tree Level Order Traversal.go @@ -8,6 +8,8 @@ package leetcode * Right *TreeNode * } */ + +// 解法一 BFS func levelOrder(root *TreeNode) [][]int { if root == nil { return [][]int{} @@ -39,3 +41,23 @@ func levelOrder(root *TreeNode) [][]int { } return res } + +// 解法二 DFS +func levelOrder_(root *TreeNode) [][]int { + levels := [][]int{} + dfsLevel(root, -1, &levels) + return levels +} + +func dfsLevel(node *TreeNode, level int, res *[][]int) { + if node == nil { + return + } + currLevel := level + 1 + for len(*res) <= currLevel { + *res = append(*res, []int{}) + } + (*res)[currLevel] = append((*res)[currLevel], node.Val) + dfsLevel(node.Left, currLevel, res) + dfsLevel(node.Right, currLevel, res) +}