36 lines
		
	
	
		
			767 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			767 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| // 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
 | |
| }
 |