示例#1
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);
        }
示例#2
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);
        }