64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // File: binary_tree_dfs.go
 | |
| // Created Time: 2022-11-26
 | |
| // Author: Reanon (793584285@qq.com)
 | |
| 
 | |
| package chapter_tree
 | |
| 
 | |
| import (
 | |
| 	. "github.com/krahets/hello-algo/pkg"
 | |
| )
 | |
| 
 | |
| // preOrder 前序遍历
 | |
| func preOrder(root *TreeNode) (nums []int) {
 | |
| 	var preOrderHelper func(node *TreeNode)
 | |
| 	// 匿名函数
 | |
| 	preOrderHelper = func(node *TreeNode) {
 | |
| 		if node == nil {
 | |
| 			return
 | |
| 		}
 | |
| 		// 访问优先级:根结点 -> 左子树 -> 右子树
 | |
| 		nums = append(nums, node.Val)
 | |
| 		preOrderHelper(node.Left)
 | |
| 		preOrderHelper(node.Right)
 | |
| 	}
 | |
| 	// 函数调用
 | |
| 	preOrderHelper(root)
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // inOrder 中序遍历
 | |
| func inOrder(root *TreeNode) (nums []int) {
 | |
| 	var inOrderHelper func(node *TreeNode)
 | |
| 	// 匿名函数
 | |
| 	inOrderHelper = func(node *TreeNode) {
 | |
| 		if node == nil {
 | |
| 			return
 | |
| 		}
 | |
| 		// 访问优先级:左子树 -> 根结点 -> 右子树
 | |
| 		inOrderHelper(node.Left)
 | |
| 		nums = append(nums, node.Val)
 | |
| 		inOrderHelper(node.Right)
 | |
| 	}
 | |
| 	// 函数调用
 | |
| 	inOrderHelper(root)
 | |
| 	return
 | |
| }
 | |
| 
 | |
| // postOrder 后序遍历
 | |
| func postOrder(root *TreeNode) (nums []int) {
 | |
| 	var postOrderHelper func(node *TreeNode)
 | |
| 	// 匿名函数
 | |
| 	postOrderHelper = func(node *TreeNode) {
 | |
| 		if node == nil {
 | |
| 			return
 | |
| 		}
 | |
| 		// 访问优先级:左子树 -> 右子树 -> 根结点
 | |
| 		postOrderHelper(node.Left)
 | |
| 		postOrderHelper(node.Right)
 | |
| 		nums = append(nums, node.Val)
 | |
| 	}
 | |
| 	// 函数调用
 | |
| 	postOrderHelper(root)
 | |
| 	return
 | |
| }
 |