예제 #1
0
        public void CreatePreAndInOrder()
        {
            int N;

            N = int.Parse(Console.ReadLine());
            for (int i = 0; i < maxSize; i++)
            {
                preOrder[i] = empty;
                inOrder[i]  = empty;
            }
            if (N > 0 && N <= maxSize)
            {
                int idx_pre = 0;
                int idx_in  = 0;
                for (int i = 0; i < 2 * N; i++)
                {
                    string[] strs = Console.ReadLine().Split(new string[] { " " }, StringSplitOptions.None);
                    if (strs[0] == "Push")
                    {
                        StackTreeData data = new StackTreeData();
                        data.content        = int.Parse(strs[1]);
                        preOrder[idx_pre++] = data.content;
                        StackTree.Push(data);
                    }
                    else if (strs[0] == "Pop")
                    {
                        StackTreeData data = StackTree.Pop();
                        inOrder[idx_in++] = data.content;
                    }
                }
            }
            GetPostOrder(preOrder, inOrder);
            PrintOut();
        }
예제 #2
0
 public void CreatePreAndInOrder(string path)
 {
     for (int i = 0; i < maxSize; i++)
     {
         preOrder[i] = empty;
         inOrder[i]  = empty;
     }
     using (FileStream fs = new FileStream(path, FileMode.Open))
     {
         using (StreamReader sr = new StreamReader(fs))
         {
             int N;
             N = int.Parse(sr.ReadLine());
             if (N > 0 && N <= maxSize)
             {
                 int idx_pre = 0;
                 int idx_in  = 0;
                 for (int i = 0; i < 2 * N; i++)
                 {
                     string[] strs = sr.ReadLine().Split(new string[] { " " }, StringSplitOptions.None);
                     if (strs[0] == "Push")
                     {
                         StackTreeData data = new StackTreeData();
                         data.content        = int.Parse(strs[1]);
                         preOrder[idx_pre++] = data.content;
                         StackTree.Push(data);
                     }
                     else if (strs[0] == "Pop")
                     {
                         StackTreeData data = StackTree.Pop();
                         inOrder[idx_in++] = data.content;
                     }
                 }
             }
         }
     }
     GetPostOrder(preOrder, inOrder);
     PrintOut();
 }