Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node {
- var children : [Node]
- var value : Int
- init(_ val: Int) {
- value = val
- children = [Node]()
- }
- }
- //1,-2,-3,—-4,—--5,—--6,-7
- let n1 = Node(1)
- let n2 = Node(2)
- let n3 = Node(3)
- let n4 = Node(4)
- let n5 = Node(5)
- let n6 = Node(6)
- let n7 = Node(7)
- let n8 = Node(8)
- n1.children.append(n2)
- n1.children.append(n3)
- n1.children.append(n7)
- n3.children.append(n4)
- n3.children.append(n5)
- n3.children.append(n6)
- n5.children.append(n8)
- func getTreeString(_ root: Node) -> String{
- var str = ""
- return getStr(root, &str)
- }
- func getStr(_ node: Node, _ prefix: inout String ) -> String{
- var res = "\(prefix)\(node.value)"
- prefix.append("-")
- for child in node.children{
- let sub = getStr(child, &prefix)
- res.append(",\(sub)")
- }
- prefix.removeLast()
- return res
- }
- var str = ""
- let res = getTreeString(n1)
- print(res)
- func buildTree(_ str: String) -> Node{
- let arr = str.split(separator: ",")
- var strarr = [String]()
- for t in arr{
- strarr.append(String(t))
- }
- let root = CreatNode(strarr.removeFirst())
- getTree(&strarr, root, 2)
- return root
- }
- func getTree(_ arr: inout [String], _ root : Node, _ currLevel : Int){
- var res = [Node]()
- while arr.count > 0 {
- let next = arr.first!.count
- if next > currLevel{ // go to next level
- getTree(&arr, res.last!, currLevel + 1)
- }else if next == currLevel {
- let node = CreatNode(arr.removeFirst())
- res.append(node)
- }else{
- break
- }
- }
- root.children = res
- }
- func CreatNode(_ str: String) -> Node {
- var st = str
- while st.first! == "-"{
- st.removeFirst()
- }
- return Node(Int(st)!)
- }
- let node = buildTree(res)
- let res2 = getTreeString(node)
- print(res2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement