Back to Repositories

Testing Binary Tree Operations and Manipulations in hello-algo

This test suite validates binary tree operations in Go, focusing on node initialization, insertion, and deletion operations. It demonstrates core tree manipulation functionality while ensuring proper node relationships and tree structure integrity.

Test Coverage Overview

The test coverage encompasses fundamental binary tree operations, including node initialization, tree construction, and node manipulation.

  • Node initialization and tree construction validation
  • Node insertion verification at specific positions
  • Node deletion and tree restructuring tests
  • Tree structure integrity verification

Implementation Analysis

The testing approach utilizes Go’s native testing framework with a focus on visual verification through tree printing.

Implementation leverages custom tree node structures and helper functions from the hello-algo package, demonstrating pointer-based node relationships and tree traversal patterns specific to Go’s memory model.

Technical Details

  • Uses Go’s testing package (testing.T)
  • Implements custom NewTreeNode constructor
  • Utilizes PrintTree visualization utility
  • Imports hello-algo package for tree operations
  • Employs pointer-based node references

Best Practices Demonstrated

The test suite exemplifies clean testing practices with clear operation separation and state verification.

  • Structured test case organization
  • Visual state verification
  • Proper memory management with Go pointers
  • Clear test step documentation
  • Modular test function design

krahets/hello-algo

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

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

package chapter_tree

import (
	"fmt"
	"testing"

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

func TestBinaryTree(t *testing.T) {
	/* 初始化二元樹 */
	// 初始化節點
	n1 := NewTreeNode(1)
	n2 := NewTreeNode(2)
	n3 := NewTreeNode(3)
	n4 := NewTreeNode(4)
	n5 := NewTreeNode(5)
	// 構建節點之間的引用(指標)
	n1.Left = n2
	n1.Right = n3
	n2.Left = n4
	n2.Right = n5
	fmt.Println("初始化二元樹")
	PrintTree(n1)

	/* 插入與刪除節點 */
	// 插入節點
	p := NewTreeNode(0)
	n1.Left = p
	p.Left = n2
	fmt.Println("插入節點 P 後")
	PrintTree(n1)
	// 刪除節點
	n1.Left = n2
	fmt.Println("刪除節點 P 後")
	PrintTree(n1)
}