public void Test5()
        {
            int[] a = new int[] { 1, 1, 2, 2, 3, 3 };
            BuildTree.BinaryTreeNode root = BuildTree.Solve(a);

            Assert.IsTrue(TestTree(root, a));
        }
        public void Test3()
        {
            int[] a = null;
            BuildTree.BinaryTreeNode root = BuildTree.Solve(a);

            Assert.IsNull(root);
        }
        private void BuildTreeList(BuildTree.BinaryTreeNode node, List <int> result)
        {
            if (node == null)
            {
                return;
            }

            BuildTreeList(node.Left, result);
            result.Add(node.Data);
            BuildTreeList(node.Right, result);
        }
        private bool TestTree(BuildTree.BinaryTreeNode root, int[] a)
        {
            List <int> resultList = new List <int>();

            BuildTreeList(root, resultList);

            int[] resultArray = resultList.ToArray();
            if (a.Length != resultArray.Length)
            {
                return(false);
            }

            for (int i = 0; i < resultArray.Length; i++)
            {
                if (a[i] != resultArray[i])
                {
                    return(false);
                }
            }

            return(true);
        }