feat(tree): add binary tree bfs in golang
This commit is contained in:
		
							
								
								
									
										35
									
								
								codes/go/chapter_tree/binary_tree_bfs.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								codes/go/chapter_tree/binary_tree_bfs.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| // File: binary_tree_bfs.go | ||||
| // Created Time: 2022-11-26 | ||||
| // Author: Reanon (793584285@qq.com) | ||||
|  | ||||
| package chapter_tree | ||||
|  | ||||
| import ( | ||||
| 	"container/list" | ||||
| 	. "github.com/krahets/hello-algo/pkg" | ||||
| ) | ||||
|  | ||||
| // levelOrder Breadth First Search | ||||
| func levelOrder(root *TreeNode) []int { | ||||
| 	// Let container.list as queue | ||||
| 	queue := list.New() | ||||
| 	// 初始化队列,加入根结点 | ||||
| 	queue.PushBack(root) | ||||
| 	// 初始化一个切片,用于保存遍历序列 | ||||
| 	nums := make([]int, 0) | ||||
| 	for queue.Len() > 0 { | ||||
| 		// poll | ||||
| 		node := queue.Remove(queue.Front()).(*TreeNode) | ||||
| 		// 保存结点 | ||||
| 		nums = append(nums, node.Val) | ||||
| 		if node.Left != nil { | ||||
| 			// 左子结点入队 | ||||
| 			queue.PushBack(node.Left) | ||||
| 		} | ||||
| 		if node.Right != nil { | ||||
| 			// 右子结点入队 | ||||
| 			queue.PushBack(node.Right) | ||||
| 		} | ||||
| 	} | ||||
| 	return nums | ||||
| } | ||||
		Reference in New Issue
	
	Block a user