diff --git a/internal/leetcode/problems_status.go b/internal/leetcode/problems_status.go index 6323f9da9..c7d7d44c5 100644 --- a/internal/leetcode/problems_status.go +++ b/internal/leetcode/problems_status.go @@ -78,6 +78,7 @@ var problemStatus = map[int]bool{ 215: true, 217: true, 219: true, + 226: true, 231: true, 233: true, 234: true, diff --git a/problems/invert-binary-tree/invert_binary_tree.go b/problems/invert-binary-tree/invert_binary_tree.go index 91417e20f..f0f256593 100644 --- a/problems/invert-binary-tree/invert_binary_tree.go +++ b/problems/invert-binary-tree/invert_binary_tree.go @@ -1 +1,23 @@ package problem226 + +import "github.com/openset/leetcode/internal/kit" + +// TreeNode - Definition for a binary tree node. +type TreeNode = kit.TreeNode + +/** + * Definition for a binary tree node. + * type TreeNode struct { + * Val int + * Left *TreeNode + * Right *TreeNode + * } + */ +func invertTree(root *TreeNode) *TreeNode { + if root != nil { + root.Left, root.Right = root.Right, root.Left + invertTree(root.Left) + invertTree(root.Right) + } + return root +} diff --git a/problems/invert-binary-tree/invert_binary_tree_test.go b/problems/invert-binary-tree/invert_binary_tree_test.go index 91417e20f..5250480b0 100644 --- a/problems/invert-binary-tree/invert_binary_tree_test.go +++ b/problems/invert-binary-tree/invert_binary_tree_test.go @@ -1 +1,29 @@ package problem226 + +import ( + "reflect" + "testing" + + "github.com/openset/leetcode/internal/kit" +) + +type testType struct { + in []int + want []int +} + +func TestInvertTree(t *testing.T) { + tests := [...]testType{ + { + in: []int{4, 2, 7, 1, 3, 6, 9}, + want: []int{4, 7, 2, 9, 6, 3, 1}, + }, + } + for _, tt := range tests { + out := invertTree(kit.SliceInt2TreeNode(tt.in)) + got := kit.TreeNode2SliceInt(out) + if !reflect.DeepEqual(got, tt.want) { + t.Fatalf("in: %v, got: %v, want: %v", tt.in, got, tt.want) + } + } +}