mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 22:28:40 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			731 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			731 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"
 | 
						|
)
 | 
						|
 | 
						|
/* 层序遍历 */
 | 
						|
func levelOrder(root *TreeNode) []any {
 | 
						|
	// 初始化队列,加入根节点
 | 
						|
	queue := list.New()
 | 
						|
	queue.PushBack(root)
 | 
						|
	// 初始化一个切片,用于保存遍历序列
 | 
						|
	nums := make([]any, 0)
 | 
						|
	for queue.Len() > 0 {
 | 
						|
		// 队列出队
 | 
						|
		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
 | 
						|
}
 |