public void TestWrap() { /* * 1 1 * / \ / \ * 2 3 2 3 * / \ / \ * 4 5 4 5 */ var s = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root1 = obj.Deserialize(s); s = "1,2,X,X,3,4,X,X,5"; var root2 = obj.Deserialize(s); Assert.True(IsSameTree(root1, root2)); /* * 1 1 * / \ / \ * 2 3 2 2 * / \ \ / \ / \ * 4 5 6 4 5 4 5 */ s = "1,2,4,X,X,5,X,X,3,X,6"; root1 = obj.Deserialize(s); s = "1,2,4,X,X,5,X,X,2,5,X,X,4"; root2 = obj.Deserialize(s); Assert.False(IsSameTree(root1, root2)); }
public void TestWrap() { /* * 1 * / \ * 2 3 * / \ * 4 5 */ var s1 = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root1 = obj.Deserialize(s1); var res = IsValidBST(root1); Assert.False(res); /* * 2 * / \ * 1 3 * / \ * 4 5 */ s1 = "2,1,X,X,3,4,X,X,5"; obj = new Codec(); root1 = obj.Deserialize(s1); res = IsValidBST(root1); Assert.False(res); /* * 5 * / \ * 1 4 * / \ * 3 6 */ s1 = "5,1,X,X,4,3,X,X,6"; obj = new Codec(); root1 = obj.Deserialize(s1); res = IsValidBST(root1); Assert.False(res); /* * 3 * / \ * 1 5 * / \ * 4 6 */ s1 = "3,1,X,X,5,4,X,X,6"; obj = new Codec(); root1 = obj.Deserialize(s1); res = IsValidBST(root1); Assert.True(res); }
public void TestWrap() { /* * 1 2 3 * / \ / \ / \ * 2 3 1 3 => 4 5 * / \ \ \ / \ \ * 4 5 4 7 5 4 7 */ var s1 = "1,2,X,X,3,4,X,X,5"; var s2 = "2,1,X,4,3,X,7"; var obj = new Codec(); var root1 = obj.Deserialize(s1); var root2 = obj.Deserialize(s2); var res = MergeTrees(root1, root2); Assert.Equal(3, res.val); }
public void TestWrap() { /* * 1 * / \ * 2 3 * / \ * 4 5 */ var s = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root = obj.Deserialize(s); var listExpected = new List <List <int> >(); listExpected.Add(new List <int> { 1 }); listExpected.Add(new List <int> { 2, 3 }); listExpected.Add(new List <int> { 4, 5 }); Assert.Equal(listExpected, LevelOrder(root)); /* * 1 * / \ * 2 3 * / \ \ * 4 5 6 */ s = "1,2,4,X,X,5,X,X,3,X,6"; obj = new Codec(); root = obj.Deserialize(s); listExpected = new List <List <int> >(); listExpected.Add(new List <int> { 1 }); listExpected.Add(new List <int> { 2, 3 }); listExpected.Add(new List <int> { 4, 5, 6 }); Assert.Equal(listExpected, LevelOrder(root)); }
public void TestWrap() { /* * 1 * / \ * 0 1 * / \ / \ * 0 1 0 1 */ var s = "1,0,0,X,X,1,X,X,1,0,X,X,1"; var obj = new Codec(); var root = obj.Deserialize(s); var res = SumRootToLeaf(root); Assert.Equal(22, res); }
public void TestWrap() { /* * 1 * / \ * 2 3 * / \ * 4 5 */ var s = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root = obj.Deserialize(s); Assert.False(IsSymmetric(root)); /* * 1 * / \ * 2 3 * / \ \ * 4 5 6 */ s = "1,2,4,X,X,5,X,X,3,X,6"; obj = new Codec(); root = obj.Deserialize(s); Assert.False(IsSymmetric(root)); /* * 1 * / \ * 2 2 * / \ / \ * 4 5 5 4 */ s = "1,2,4,X,X,5,X,X,2,5,X,X,4"; obj = new Codec(); root = obj.Deserialize(s); Assert.True(IsSymmetric(root)); }
public void TestWrap() { /* * 1 * / \ * 2 3 * / \ * 4 5 */ var s = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root = obj.Deserialize(s); var compare = new List <int> { 1, 2, 3, 4, 5 }; var res = PreorderTraversal(root); Assert.Equal(compare, res); /* * 1 * / \ * 2 3 * / \ \ * 4 5 6 */ s = "1,2,4,X,X,5,X,X,3,X,6"; obj = new Codec(); root = obj.Deserialize(s); compare = new List <int> { 1, 2, 4, 5, 3, 6 }; res = PreorderTraversal(root); Assert.Equal(compare, res); }
public void TestWrap() { /* * 1 * / \ * 2 3 * / \ * 4 5 */ var s = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root = obj.Deserialize(s); var res = WidthOfBinaryTree(root); Assert.Equal(2, res); /* * 1 * / \ * 2 3 * / \ \ * 4 5 6 */ s = "1,2,4,X,X,5,X,X,3,X,6"; obj = new Codec(); root = obj.Deserialize(s); res = WidthOfBinaryTree(root); Assert.Equal(4, res); /* * 1 * / \ * 3 2 * / * 5 */ s = "1,3,5,X,X,X,2"; obj = new Codec(); root = obj.Deserialize(s); res = WidthOfBinaryTree(root); Assert.Equal(2, res); /* * 1 * / * 3 * / * 5 */ s = "1,3,5,X,X,X"; obj = new Codec(); root = obj.Deserialize(s); res = WidthOfBinaryTree(root); Assert.Equal(1, res); /* * 1 * / \ * 3 2 * / \ * 5 6 * / \ * 7 8 */ s = "1,3,5,7,X,X,X,X,2,X,6,X,8"; obj = new Codec(); root = obj.Deserialize(s); res = WidthOfBinaryTree(root); Assert.Equal(8, res); }
public void TestWrap() { /* * Orignal * 1 * / \ * 2 3 * / \ * 4 5 */ var s = "1,2,X,X,3,4,X,X,5"; var obj = new Codec(); var root = obj.Deserialize(s); /* * Inverted * 1 * / \ * 3 2 * / \ * 5 4 */ s = "1,3,5,X,X,4,X,X,2"; var expected = obj.Deserialize(s); var res = InvertTree(root); var treeTest = new SameTree(); Assert.True(treeTest.IsSameTree(expected, res)); /* * Original * 1 * / \ * 2 3 * / \ \ * 4 5 6 */ s = "1,2,4,X,X,5,X,X,3,X,6"; root = obj.Deserialize(s); /* * Inverted * 1 * / \ * 3 2 * / / \ * 6 5 4 * */ s = "1,3,6,X,X,X,2,5,X,X,4"; expected = obj.Deserialize(s); res = InvertTree(root); Assert.True(treeTest.IsSameTree(expected, res)); /* * Original * 1 * / \ * 3 2 * / * 5 */ s = "1,3,5,X,X,X,2"; root = obj.Deserialize(s); /* * Inverted * 1 * / \ * 2 3 \ \ 5 */ s = "1,2,X,X,3,X,5"; expected = obj.Deserialize(s); res = InvertTree(root); Assert.True(treeTest.IsSameTree(expected, res)); /* * Original * 1 * / * 3 * / * 5 */ s = "1,3,5,X,X,X"; root = obj.Deserialize(s); /* * Inverted * 1 \ \ 3 \ \ 5 */ s = "1,X,3,X,5"; expected = obj.Deserialize(s); res = InvertTree(root); Assert.True(treeTest.IsSameTree(expected, res)); /* * Original * 1 * / \ * 3 2 * / \ * 5 6 * / \ * 7 8 */ s = "1,3,5,7,X,X,X,X,2,X,6,X,8"; root = obj.Deserialize(s); /* * Inverted * 1 * / \ * 2 3 * / \ * 6 5 * / \ * 8 7 */ s = "1,2,6,8,X,X,X,X,3,X,5,X,7"; expected = obj.Deserialize(s); res = InvertTree(root); Assert.True(treeTest.IsSameTree(expected, res)); }
public void TestWrap() { /* * 1 3 * / \ / \ * 2 3 4 5 * / \ * 4 5 */ var s1 = "1,2,X,X,3,4,X,X,5"; var s2 = "3,4,X,X,5"; var obj = new Codec(); var root1 = obj.Deserialize(s1); var root2 = obj.Deserialize(s2); Assert.True(IsSubtree(root1, root2)); /* * 1 2 * / \ / \ * 2 3 4 5 * / \ \ * 4 5 6 */ s1 = "1,2,4,X,X,5,X,X,3,X,6"; s2 = "2,4,X,X,5"; root1 = obj.Deserialize(s1); root2 = obj.Deserialize(s2); Assert.True(IsSubtree(root1, root2)); /* * 1 3 * / \ / * 3 2 5 * / * 5 */ s1 = "1,3,5,X,X,X,2"; s2 = "3,5"; root1 = obj.Deserialize(s1); root2 = obj.Deserialize(s2); Assert.True(IsSubtree(root1, root2)); /* * 1 3 * / / * 3 5 * / * 5 */ s1 = "1,3,5,X,X,X"; s2 = "3,5"; root1 = obj.Deserialize(s1); root2 = obj.Deserialize(s2); Assert.True(IsSubtree(root1, root2)); /* * 1 6 * / \ \ * 3 2 8 * / \ * 5 6 * / \ * 7 8 */ s1 = "1,3,5,7,X,X,X,X,2,X,6,X,8"; s2 = "6,X,X,8"; root1 = obj.Deserialize(s1); root2 = obj.Deserialize(s2); Assert.True(IsSubtree(root1, root2)); }