From 9e357544d1f61fcf1a2e108c85f1e97f01630198 Mon Sep 17 00:00:00 2001 From: novahe Date: Tue, 1 Jun 2021 22:52:00 +0800 Subject: [PATCH] fix/199: clean up redundant code --- .../199. Binary Tree Right Side View.go | 34 +++++++------------ .../0199.Binary-Tree-Right-Side-View.md | 34 +++++++------------ 2 files changed, 24 insertions(+), 44 deletions(-) diff --git a/leetcode/0199.Binary-Tree-Right-Side-View/199. Binary Tree Right Side View.go b/leetcode/0199.Binary-Tree-Right-Side-View/199. Binary Tree Right Side View.go index e30aec0d..de53951b 100644 --- a/leetcode/0199.Binary-Tree-Right-Side-View/199. Binary Tree Right Side View.go +++ b/leetcode/0199.Binary-Tree-Right-Side-View/199. Binary Tree Right Side View.go @@ -17,33 +17,23 @@ type TreeNode = structures.TreeNode */ func rightSideView(root *TreeNode) []int { + res := []int{} if root == nil { - return []int{} + return res } - queue := []*TreeNode{} - queue = append(queue, root) - curNum, nextLevelNum, res, tmp := 1, 0, []int{}, []int{} - for len(queue) != 0 { - if curNum > 0 { - node := queue[0] - if node.Left != nil { - queue = append(queue, node.Left) - nextLevelNum++ + queue := []*TreeNode{root} + for len(queue) > 0 { + n := len(queue) + for i := 0; i < n; i++ { + if queue[i].Left != nil { + queue = append(queue, queue[i].Left) } - if node.Right != nil { - queue = append(queue, node.Right) - nextLevelNum++ + if queue[i].Right != nil { + queue = append(queue, queue[i].Right) } - curNum-- - tmp = append(tmp, node.Val) - queue = queue[1:] - } - if curNum == 0 { - res = append(res, tmp[len(tmp)-1]) - curNum = nextLevelNum - nextLevelNum = 0 - tmp = []int{} } + res = append(res, queue[n-1].Val) + queue = queue[n:] } return res } diff --git a/website/content/ChapterFour/0100~0199/0199.Binary-Tree-Right-Side-View.md b/website/content/ChapterFour/0100~0199/0199.Binary-Tree-Right-Side-View.md index 8f0e72c1..70be5978 100644 --- a/website/content/ChapterFour/0100~0199/0199.Binary-Tree-Right-Side-View.md +++ b/website/content/ChapterFour/0100~0199/0199.Binary-Tree-Right-Side-View.md @@ -50,33 +50,23 @@ package leetcode * } */ func rightSideView(root *TreeNode) []int { + res := []int{} if root == nil { - return []int{} + return res } - queue := []*TreeNode{} - queue = append(queue, root) - curNum, nextLevelNum, res, tmp := 1, 0, []int{}, []int{} - for len(queue) != 0 { - if curNum > 0 { - node := queue[0] - if node.Left != nil { - queue = append(queue, node.Left) - nextLevelNum++ + queue := []*TreeNode{root} + for len(queue) > 0 { + n := len(queue) + for i := 0; i < n; i++ { + if queue[i].Left != nil { + queue = append(queue, queue[i].Left) } - if node.Right != nil { - queue = append(queue, node.Right) - nextLevelNum++ + if queue[i].Right != nil { + queue = append(queue, queue[i].Right) } - curNum-- - tmp = append(tmp, node.Val) - queue = queue[1:] - } - if curNum == 0 { - res = append(res, tmp[len(tmp)-1]) - curNum = nextLevelNum - nextLevelNum = 0 - tmp = []int{} } + res = append(res, queue[n-1].Val) + queue = queue[n:] } return res }