ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฉ๐ปโ๐ป ๋ฌธ์
1991๋ฒ: ํธ๋ฆฌ ์ํ
์ฒซ์งธ ์ค์๋ ์ด์ง ํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N(1โคNโค26)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๋ ธ๋์ ๊ทธ์ ์ผ์ชฝ ์์ ๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๊ฐ ์ฃผ์ด์ง๋ค. ๋ ธ๋์ ์ด๋ฆ์ A๋ถํฐ ์ฐจ๋ก๋๋ก ์๋ฌธ์
www.acmicpc.net



โ๐ป ํ์ด
๐จ Go
// https://www.acmicpc.net/problem/1991
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
fmt.Fscanln(reader, &n)
var nodes = map[string]*Node{}
for i := 0; i < n; i++ {
var nodeName, leftNodeName, rightNodeName string
fmt.Fscanln(reader, &nodeName, &leftNodeName, &rightNodeName)
node := new(Node)
if nodes[nodeName] != nil {
node = nodes[nodeName]
} else {
node.setName(nodeName)
nodes[nodeName] = node
}
if leftNodeName != "." {
leftNode := new(Node)
leftNode.setName(leftNodeName)
node.setLeftChild(leftNode)
nodes[leftNodeName] = leftNode
}
if rightNodeName != "." {
rightNode := new(Node)
rightNode.setName(rightNodeName)
node.setRightChild(rightNode)
nodes[rightNodeName] = rightNode
}
}
fmt.Fprintln(writer, preOrder(nodes["A"], ""))
fmt.Fprintln(writer, inOrder(nodes["A"], ""))
fmt.Fprintln(writer, postOrder(nodes["A"], ""))
}
type Node struct {
name string
leftNode *Node
rightNode *Node
}
func (n *Node) setLeftChild(l *Node) {
n.leftNode = l
}
func (n *Node) setRightChild(r *Node) {
n.rightNode = r
}
func (n *Node) setName(name string) {
n.name = name
}
func preOrder(startNode *Node, printStr string) string {
printStr += startNode.name
if startNode.leftNode != nil {
printStr = preOrder(startNode.leftNode, printStr)
}
if startNode.rightNode != nil {
printStr = preOrder(startNode.rightNode, printStr)
}
return printStr
}
func inOrder(startNode *Node, printStr string) string {
if startNode.leftNode != nil {
printStr = inOrder(startNode.leftNode, printStr)
}
printStr += startNode.name
if startNode.rightNode != nil {
printStr = inOrder(startNode.rightNode, printStr)
}
return printStr
}
func postOrder(startNode *Node, printStr string) string {
if startNode.leftNode != nil {
printStr = postOrder(startNode.leftNode, printStr)
}
if startNode.rightNode != nil {
printStr = postOrder(startNode.rightNode, printStr)
}
printStr += startNode.name
return printStr
}
๐จ Python3
# https://www.acmicpc.net/problem/1991
import sys
class Node():
def __init__(self, name, left, right):
self.name = name
self.left = left
self.right = right
def preorder(node):
print(node.name, end="")
if node.left != ".":
preorder(nodes[node.left])
if node.right != ".":
preorder(nodes[node.right])
def inorder(node):
if node.left != ".":
inorder(nodes[node.left])
print(node.name, end="")
if node.right != ".":
inorder(nodes[node.right])
def postorder(node):
if node.left != ".":
postorder(nodes[node.left])
if node.right != ".":
postorder(nodes[node.right])
print(node.name, end="")
nodes = {}
if __name__ == "__main__":
n = int(sys.stdin.readline())
for i in range(n):
node_name, left_name, right_name = sys.stdin.readline().split()
nodes[node_name] = Node(node_name, left_name, right_name)
preorder(nodes["A"])
print()
inorder(nodes["A"])
print()
postorder(nodes["A"])
728x90
'dev > algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ / 1057๋ฒ / ํ ๋๋จผํธ [Go][Python3] (0) | 2021.03.27 |
---|---|
BOJ / 11048๋ฒ / ์ด๋ํ๊ธฐ [Go][Python3] (0) | 2021.03.26 |
BOJ / 11057๋ฒ / ์ค๋ฅด๋ง ์ [Go][Python3] (0) | 2021.03.24 |
BOJ / 1475๋ฒ / ๋ฐฉ ๋ฒํธ [Go][Python3] (0) | 2021.03.23 |
BOJ / 6603๋ฒ / ๋ก๋ [Go][Python3] (0) | 2021.03.22 |
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
TAG
- ์๋ฐ
- BOJ
- dp
- ๋งฅ๋ถ
- ์๊ฐ๊ต์ฒด
- ๋งฅ๋ถ ์ ๊ทธ๋ ์ด๋
- java
- ์๊ณ ๋ฆฌ์ฆ
- AWS
- ๋ฐ๋
- baekjoon
- ballet
- BFS
- ์ด๋ถํ์
- Golang
- ๋งฅ๋ถํ๋ก
- go
- ์คํ
- MongoDB
- Algorithm
- ํด์๋งต
- python3
- ๋ชฝ๊ณ ๋๋น
- ๋ธ๋ฃจํธํฌ์ค
- dfs
- ๋ถํ ์ ๋ณต
- ํ๋ก์ด๋์์ฌ
- Macbook pro 2012 mid 13
- ํ
- ๋ฐฑ์ค
- Total
- Today
- Yesterday