dengxinyi 6 yıl önce
ebeveyn
işleme
b62730ac82

+ 22 - 0
oj/algorithms/binarytree/traversal.go

@@ -23,6 +23,9 @@ func main() {
 	inorder(&n1)
 	fmt.Println("\npostorder: ")
 	postorder(&n1)
+	fmt.Println("\nlevelorder: ")
+	levelorder(&n1)
+	fmt.Println()
 }
 
 func preorder(root *node) {
@@ -51,3 +54,22 @@ func postorder(root *node) {
 	postorder(root.right)
 	fmt.Printf("%d ", root.val)
 }
+
+func levelorder(root *node) {
+	if root == nil {
+		return
+	}
+	queue := make([]*node, 0)
+	queue = append(queue, root)
+	for len(queue) != 0 {
+		head := queue[len(queue)-1]
+		queue = queue[:len(queue)-1]
+		fmt.Printf("%d ", head.val)
+		if head.left != nil {
+			queue = append(queue, head.left)
+		}
+		if head.right != nil {
+			queue = append(queue, head.right)
+		}
+	}
+}

+ 2 - 2
oj/algorithms/segmenttree/segmenttree.go

@@ -87,10 +87,10 @@ func main() {
 	}
 	fmt.Println("Sum of 1 ~", n, "is", root.query(1, n))
 	var l, r, val int
-	fmt.Print("Update: ")
+	fmt.Print("Update(l, r, val): ")
 	fmt.Scan(&l, &r, &val)
 	root.update(l, r, val)
-	fmt.Print("Query: ")
+	fmt.Print("Query(l, r): ")
 	fmt.Scan(&l, &r)
 	fmt.Println(root.query(l, r))
 }