Content-Length: 550575 | pFad | http://github.com/BigEggStudy/LeetCode-CS/commit/f73d30f37d7e5b98392a3227af91541d522fdbc4

B3 Add solution for problem 449 · BigEggStudy/LeetCode-CS@f73d30f · GitHub
Skip to content

Commit f73d30f

Browse files
committed
Add solution for problem 449
1 parent 7f83e56 commit f73d30f

File tree

5 files changed

+106
-1
lines changed

5 files changed

+106
-1
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
3+
namespace LeetCode.Test
4+
{
5+
[TestClass]
6+
public class _0449_SerializeAndDeserializeBST_Test
7+
{
8+
[TestMethod]
9+
public void SerializeAndDeserialize_1()
10+
{
11+
var root = TestHelper.GenerateTree(new int?[] { 2, 1, 3 });
12+
13+
var solution = new _0449_SerializeAndDeserializeBST();
14+
var result = solution.serialize(root);
15+
AssertHelper.AssertTree(new int?[] { 2, 1, 3 }, solution.deserialize(result));
16+
}
17+
18+
[TestMethod]
19+
public void SerializeAndDeserialize_2()
20+
{
21+
var root = TestHelper.GenerateTree(new int?[] { 2, 1, 3 });
22+
23+
var solution = new _0449_SerializeAndDeserializeBST();
24+
var result = solution.serialize(null);
25+
Assert.IsNull(solution.deserialize(result));
26+
}
27+
}
28+
}

LeetCode.Test/LeetCode.Test.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@
375375
<Compile Include="0401-0450\0445-AddTwoNumbersII-Test.cs" />
376376
<Compile Include="0401-0450\0447-NumberOfBoomerangs-Test.cs" />
377377
<Compile Include="0401-0450\0448-FindAllNumbersDisappearedInAnArray-Test.cs" />
378+
<Compile Include="0401-0450\0449-SerializeAndDeserializeBST-Test.cs" />
378379
<Compile Include="0401-0450\0450-DeleteNodeInABST-Test.cs" />
379380
<Compile Include="0451-0500\0451-SortCharactersByFrequency-Test.cs" />
380381
<Compile Include="0451-0500\0452-MinimumNumberOfArrowsToBurstBalloons-Test.cs" />
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//-----------------------------------------------------------------------------
2+
// Runtime: 112ms
3+
// Memory Usage: 30.2 MB
4+
// Link: https://leetcode.com/submissions/detail/406714064/
5+
//-----------------------------------------------------------------------------
6+
7+
using System.Collections.Generic;
8+
using System.Linq;
9+
using System.Text;
10+
11+
namespace LeetCode
12+
{
13+
/**
14+
* Definition for a binary tree node.
15+
* public class TreeNode {
16+
* public int val;
17+
* public TreeNode left;
18+
* public TreeNode right;
19+
* public TreeNode(int x) { val = x; }
20+
* }
21+
*/
22+
public class _0449_SerializeAndDeserializeBST
23+
{
24+
25+
// Encodes a tree to a single string.
26+
public string serialize(TreeNode root)
27+
{
28+
var sb = PostOrder(root, new StringBuilder());
29+
if (sb.Length > 0)
30+
sb.Remove(sb.Length - 1, 1);
31+
32+
return sb.ToString();
33+
}
34+
35+
// Decodes your encoded data to tree.
36+
public TreeNode deserialize(string data)
37+
{
38+
if (string.IsNullOrEmpty(data)) return null;
39+
40+
var nums = data.Split().Select(n => int.Parse(n)).ToList();
41+
return Helper(int.MinValue, int.MaxValue, nums);
42+
}
43+
44+
private StringBuilder PostOrder(TreeNode root, StringBuilder sb)
45+
{
46+
if (root == null) return sb;
47+
PostOrder(root.left, sb);
48+
PostOrder(root.right, sb);
49+
sb.Append(root.val);
50+
sb.Append(" ");
51+
return sb;
52+
}
53+
54+
private TreeNode Helper(int lower, int upper, IList<int> nums)
55+
{
56+
if (nums.Count == 0) return null;
57+
var value = nums.Last();
58+
if (value < lower || value > upper) return null;
59+
60+
nums.RemoveAt(nums.Count - 1);
61+
var root = new TreeNode(value);
62+
root.right = Helper(value, upper, nums);
63+
root.left = Helper(lower, value, nums);
64+
return root;
65+
}
66+
}
67+
68+
// Your Codec object will be instantiated and called as such:
69+
// Codec ser = new Codec();
70+
// Codec deser = new Codec();
71+
// String tree = ser.serialize(root);
72+
// TreeNode ans = deser.deserialize(tree);
73+
// return ans;
74+
}

LeetCode/LeetCode.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@
366366
<Compile Include="0401-0450\0445-AddTwoNumbersII.cs" />
367367
<Compile Include="0401-0450\0447-NumberOfBoomerangs.cs" />
368368
<Compile Include="0401-0450\0448-FindAllNumbersDisappearedInAnArray.cs" />
369+
<Compile Include="0401-0450\0449-SerializeAndDeserializeBST.cs" />
369370
<Compile Include="0401-0450\0450-DeleteNodeInABST.cs" />
370371
<Compile Include="0451-0500\0451-SortCharactersByFrequency.cs" />
371372
<Compile Include="0451-0500\0452-MinimumNumberOfArrowsToBurstBalloons.cs" />

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[![AppVeyor Build Status](https://img.shields.io/appveyor/build/bigegg/leetcode-cs?label=Windows%20Build%20Status&logo=AppVeyor&style=flat-square)](https://ci.appveyor.com/project/BigEgg/leetcode-cs)
2-
[![Solved Problems](https://img.shields.io/badge/Solved%20Problems-820-blue.svg?style=flat-square)](https://github.com/BigEggStudy/LeetCode-CS)
2+
[![Solved Problems](https://img.shields.io/badge/Solved%20Problems-821-blue.svg?style=flat-square)](https://github.com/BigEggStudy/LeetCode-CS)
33

44
# LeetCode
55
The C# solutions for LeetCode problems.
@@ -415,6 +415,7 @@ The C# solutions for LeetCode problems.
415415
| 445 | Add Two Numbers II | [C#](./LeetCode/0401-0450/0445-AddTwoNumbersII.cs)(108ms) | N(N) | O(1) | |
416416
| 447 | Number of Boomerangs | [C#](./LeetCode/0401-0450/0447-NumberOfBoomerangs.cs)(244ms) | O(N<sup>2</sup>) | O(N) | |
417417
| 448 | Find All Numbers Disappeared in an Array | [C#](./LeetCode/0401-0450/0448-FindAllNumbersDisappearedInAnArray.cs)(296ms) | O(N) | O(1) | |
418+
| 449 | Serialize and Deserialize BST | [C#](./LeetCode/0401-0450/0449-SerializeAndDeserializeBST.cs)(112ms) | O(N) | O(N) | |
418419
| 450 | Delete Node in a BST | [C#](./LeetCode/0401-0450/0450-DeleteNodeInABST.cs)(100ms) | O(logN) | O(logN) | |
419420

420421
### Problems 451-500

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/BigEggStudy/LeetCode-CS/commit/f73d30f37d7e5b98392a3227af91541d522fdbc4

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy