C#/수업 내용

[C#] 이진 트리 pre-order(전위 순회)

JSH1 2021. 9. 30. 09:53

 


pre-order Recursive

            bt.PreOrder(root);
        public void PreOrder(Node root)
        {
            Console.WriteLine(root.Data);

            if (root.Left != null) PreOrder(root.Left);
            if (root.Right != null) PreOrder(root.Right);
        }


pre-order Stack

            bt.PreOrder(root);
        public void PreOrder(Node root) // 이진 트리 Stack pre-order
        {
            Stack<Node> nodes = new Stack<Node>();

            nodes.Push(root);
            while(nodes.Count > 0)
            {
                Node temp = nodes.Pop();
                Console.WriteLine(temp.Data);

                if(temp.Right != null)
                {
                    nodes.Push(temp.Right);
                }

                if (temp.Left != null)
                {
                    nodes.Push(temp.Left);
                }
            }
        }