diff --git a/LeetCodeSharp.Tests/LeetCodeSharp.Tests.csproj b/LeetCodeSharp.Tests/LeetCodeSharp.Tests.csproj
new file mode 100644
index 0000000..a65736f
--- /dev/null
+++ b/LeetCodeSharp.Tests/LeetCodeSharp.Tests.csproj
@@ -0,0 +1,27 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/LeetCodeSharp.Tests/P589Tests.cs b/LeetCodeSharp.Tests/P589Tests.cs
new file mode 100644
index 0000000..1ba123e
--- /dev/null
+++ b/LeetCodeSharp.Tests/P589Tests.cs
@@ -0,0 +1,22 @@
+using LeetCodeSharp.Problems;
+using LeetCodeSharp.Utils;
+
+namespace LeetCodeSharp.Tests;
+
+public class P589Tests
+{
+ [Fact]
+ public void Test1()
+ {
+ Node root = new Node(1, [
+ new Node(3),
+ new Node(2),
+ new Node(4),
+ ]);
+
+ IList except = [1, 3, 2, 4];
+
+ var solution = new Solution();
+ Assert.Equal(except, solution.Preorder(root));
+ }
+}
\ No newline at end of file
diff --git a/LeetCodeSharp.sln b/LeetCodeSharp.sln
index b503798..bd911ad 100644
--- a/LeetCodeSharp.sln
+++ b/LeetCodeSharp.sln
@@ -3,9 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34607.119
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeetCodeSharp", "LeetCodeSharp\LeetCodeSharp.csproj", "{EB1DDDC1-A2FC-4AAB-A21A-59FAAFF656DD}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LeetCodeSharp", "LeetCodeSharp\LeetCodeSharp.csproj", "{EB1DDDC1-A2FC-4AAB-A21A-59FAAFF656DD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeetCodeSharp.Fetcher", "LeetCodeSharp.Fetcher\LeetCodeSharp.Fetcher.csproj", "{5D45BB2A-E512-4353-8746-6F0B79282C76}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LeetCodeSharp.Fetcher", "LeetCodeSharp.Fetcher\LeetCodeSharp.Fetcher.csproj", "{5D45BB2A-E512-4353-8746-6F0B79282C76}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LeetCodeSharp.Tests", "LeetCodeSharp.Tests\LeetCodeSharp.Tests.csproj", "{97E271FD-7244-4DD2-982C-103DF1E92B7C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,6 +23,10 @@ Global
{5D45BB2A-E512-4353-8746-6F0B79282C76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5D45BB2A-E512-4353-8746-6F0B79282C76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5D45BB2A-E512-4353-8746-6F0B79282C76}.Release|Any CPU.Build.0 = Release|Any CPU
+ {97E271FD-7244-4DD2-982C-103DF1E92B7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {97E271FD-7244-4DD2-982C-103DF1E92B7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {97E271FD-7244-4DD2-982C-103DF1E92B7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {97E271FD-7244-4DD2-982C-103DF1E92B7C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/LeetCodeSharp/Utils/Node.cs b/LeetCodeSharp/Utils/Node.cs
index 443df9f..09ef5fd 100644
--- a/LeetCodeSharp/Utils/Node.cs
+++ b/LeetCodeSharp/Utils/Node.cs
@@ -12,6 +12,7 @@ namespace LeetCodeSharp.Utils
public Node(int _val)
{
val = _val;
+ children = new List();
}
public Node(int _val, IList _children)