Back to Repositories

Testing Binary Tree DFS Traversal Operations in hello-algo

This test suite validates depth-first search (DFS) traversal operations on binary trees in Go, specifically testing pre-order, in-order, and post-order traversal implementations. The tests ensure correct node visitation sequences and tree structure integrity.

Test Coverage Overview

The test suite provides comprehensive coverage of binary tree traversal operations.

Key areas tested include:
  • Pre-order traversal sequence verification
  • In-order traversal path validation
  • Post-order traversal correctness
  • Tree initialization from array data
Edge cases handled include empty trees and single-node trees. Integration points cover the tree initialization utility and printing functions.

Implementation Analysis

The testing approach utilizes Go’s native testing framework with a focus on functional verification of tree traversal algorithms.

Technical implementation features:
  • Direct tree construction from slice data
  • Global state management for node collection
  • Sequential traversal verification
  • Visual tree structure validation

Technical Details

Testing infrastructure includes:
  • Go testing package (testing.T)
  • Custom tree node implementation
  • Utility functions for tree creation (SliceToTree)
  • Visual tree printing capability (PrintTree)
  • External package imports for tree operations

Best Practices Demonstrated

The test implementation showcases several testing best practices in Go.

Notable practices include:
  • Clear test function naming conventions
  • Comprehensive traversal verification
  • Modular test structure
  • Visual output for debugging
  • Reusable tree initialization utilities

krahets/hello-algo

zh-hant/codes/go/chapter_tree/binary_tree_dfs_test.go

            
// File: binary_tree_dfs_test.go
// Created Time: 2022-11-26
// Author: Reanon ([email protected])

package chapter_tree

import (
	"fmt"
	"testing"

	. "github.com/krahets/hello-algo/pkg"
)

func TestPreInPostOrderTraversal(t *testing.T) {
	/* 初始化二元樹 */
	// 這裡藉助了一個從陣列直接生成二元樹的函式
	root := SliceToTree([]any{1, 2, 3, 4, 5, 6, 7})
	fmt.Println("\n初始化二元樹: ")
	PrintTree(root)

	// 前序走訪
	nums = nil
	preOrder(root)
	fmt.Println("\n前序走訪的節點列印序列 =", nums)

	// 中序走訪
	nums = nil
	inOrder(root)
	fmt.Println("\n中序走訪的節點列印序列 =", nums)

	// 後序走訪
	nums = nil
	postOrder(root)
	fmt.Println("\n後序走訪的節點列印序列 =", nums)
}