Exemple #1
0
 public int Find(JeongLinkedList <T> list, T value)
 {
     for (int i = 0; i < _Count; i++)
     {
         if (list[i].Equals(value) == true)
         {
             //System.Console.WriteLine("찻앗음" + i + " " + list[i]);
             return(i);
         }
     }
     return(-1);
 }
Exemple #2
0
        /// <summary>
        /// 전위 순회 함수
        /// 전위 순회는 뿌리 ->왼쪽 -> 오른쪽 순서로 방문
        /// </summary>
        public void PreorderPrintTree()
        {
            JeongBinaryTreeNode <T> current = Root;
            JeongStack <JeongBinaryTreeNode <T> > BtreeStaks = new JeongStack <JeongBinaryTreeNode <T> >();
            JeongLinkedList <T> printList = new JeongLinkedList <T>();

            if (Root == null)
            {
                Console.Write("리턴 합니다 트리가 비었습니다");
                return;
            }



            BtreeStaks.PuSH(Root);
            //BtreeStaks.PuSH(Root);
            Console.WriteLine(BtreeStaks.IsEmpTy());
            int index = 0;

            while (!BtreeStaks.IsEmpTy())
            {
                var PopData = BtreeStaks.Pop;



                printList.Add(PopData.Data); // 방문 처리

                //스택은 FIFO
                // 오른쪽 먼저 삽입 -> 왼쪽 삽입
                if (PopData.Right != null)
                {
                    BtreeStaks.Push = PopData.Right;
                }

                if (PopData.Left != null)
                {
                    BtreeStaks.Push = PopData.Left;
                }
            }
            ConsolPrint(ref printList);
        }
Exemple #3
0
        public void ConsolPrint(ref JeongLinkedList <T> printList)
        {
            string TextData = "";

            for (int i = 0; i < printList._Count; i++)
            {
                if (i % 5 == 0)
                {
                    //Console.WriteLine("\n");
                    TextData += "\n";
                }
                if (i == printList._Count - 1)
                {
                    TextData += printList[i];
                }
                else
                {
                    TextData += printList[i] + " -> ";
                }
            }
            Console.WriteLine("결과 \n" + TextData);
        }
Exemple #4
0
        /// <summary>
        /// 중위 순회
        /// </summary>
        public void InorderPrintTree()
        {
            JeongBinaryTreeNode <T> current = null;
            JeongStack <JeongBinaryTreeNode <T> > BtreeStaks = new JeongStack <JeongBinaryTreeNode <T> >();
            JeongLinkedList <T> printList = new JeongLinkedList <T>();

            BtreeStaks.PuSH(current);
            current = Root;
            //BtreeStaks.PuSH(Root);
            Console.WriteLine(BtreeStaks.IsEmpTy());


            while (!BtreeStaks.IsEmpTy())
            {
                // 매 반복시 왼쪾 트리 검색 만약 왼쪽 트리 원소가 있다면 스택에 저장
                while (current != null)
                {
                    BtreeStaks.Push = current;

                    current = current.Left;
                }
                current = BtreeStaks.Pop;

                if (current == null)
                {
                    Console.WriteLine("현재 널 발생");
                    break;
                }
                // break;
                printList.Add(current.Data);

                current = current.Right;
                Console.WriteLine("현재 널 발생2");
            }
            ConsolPrint(ref printList);
        }
Exemple #5
0
        /// <summary>
        /// ㅎ후위 순회
        /// </summary>
        public void postorderPrintTree()
        {
            JeongBinaryTreeNode <T> current  = null;
            JeongBinaryTreeNode <T> doneNode = null;
            JeongStack <JeongBinaryTreeNode <T> > BtreeStaks = new JeongStack <JeongBinaryTreeNode <T> >();
            JeongLinkedList <T> printList = new JeongLinkedList <T>();

            //BtreeStaks.PuSH(current);
            current = Root;
            //BtreeStaks.PuSH(Root);
            Console.WriteLine(BtreeStaks.IsEmpTy());

            string stackPath = "";
            int    i         = 0;

            while (true)
            {
                if (current != null && current != doneNode)
                {
                    // 매 반복시 왼쪾 트리 검색 만약 왼쪽 트리 원소가 있다면 스택에 저장
                    //stackPath += current.Data + " -> ";
                    BtreeStaks.Push = current;
                    while (current != null)
                    {
                        if (current.Right != null)
                        {
                            BtreeStaks.Push = current.Right;
                            //stackPath += current.Right.Data + " -> ";
                        }
                        if (current.Left != null)
                        {
                            BtreeStaks.Push = current.Left;
                            //stackPath += current.Left.Data + " -> ";
                        }


                        current = current.Left;
                    }
                }


                int sa = 1;
                //Console.WriteLine((i++) + " 회차 스택 뷰 \n");
                //treeStaks.StackView();
                if (!BtreeStaks.IsEmpTy())
                {
                    current = BtreeStaks.Pop;  // 스택에서 노드 뽑기

                    // 왼쪽 노드가 널이 아니고 오른쪽 노드가 널인경우
                    if (current.Left != null && current.Right == null && current.Left != doneNode)
                    {
                        BtreeStaks.Push = current;
                        //  stackPath += current.Data + "|| -> ";
                        current = current.Left;
                    }

                    if (current.Right == null || current.Right == doneNode)
                    {
                        printList.Add(current.Data);
                        doneNode = current;
                    }
                    // Console.WriteLine("done Node :: " + doneNode.Data);
                }
                else
                {
                    break;
                }
                //Console.WriteLine(stackPath);
            }
            ConsolPrint(ref printList);
        }
Exemple #6
0
 public JeongLinkedList()
 {
     Jlist = this;
 }
 public JeongListNode()
 {
     Data = default(T);
     Next = null;
     list = null;
 }