📖 Scenario: You are working on a program that analyzes family trees. Each person is a node, and their children are connected below them. You want to find out how tall the family tree is, meaning the longest chain from the oldest ancestor down to the youngest descendant.
🎯 Goal: Build a program to create a simple binary tree, then calculate and print its height.
📋 What You'll Learn
Create a binary tree node struct called Node with value, left, and right fields
Create a sample binary tree with exactly 5 nodes using Node
Create a function called height that calculates the height of the binary tree
Print the height of the binary tree
💡 Why This Matters
🌍 Real World
Binary trees are used in many applications like organizing data, searching quickly, and representing hierarchical information such as family trees or file systems.
💼 Career
Understanding binary trees and recursion is essential for software developers working with data structures, algorithms, and system design.
Progress0 / 4 steps
1
Create the binary tree nodes
Create a struct called Node with an int field called value and two pointers to Node called left and right. Then create a binary tree with 5 nodes: root node with value 1, root's left child with value 2, root's right child with value 3, left child's left child with value 4, and left child's right child with value 5.
DSA Go
Hint
Define the struct first, then create the root node and assign its children.
2
Create the height function signature
Create a function called height that takes a pointer to Node named node and returns an int. This function will calculate the height of the binary tree.
DSA Go
Hint
Start the function by checking if the node is nil and return 0 in that case.
3
Implement the height calculation logic
Inside the height function, calculate the height of the left subtree by calling height(node.left) and store it in a variable called leftHeight. Similarly, calculate the height of the right subtree by calling height(node.right) and store it in rightHeight. Return the greater of leftHeight and rightHeight plus 1.
DSA Go
Hint
Use recursion to get heights of left and right subtrees, then return the bigger one plus one.
4
Print the height of the binary tree
In the main function, call height(root) and print the result using fmt.Println. Import the fmt package at the top.
DSA Go
Hint
Use fmt.Println(height(root)) to print the height.
Practice
(1/5)
1. What does the height of a binary tree represent?
easy
A. The number of children of the root node
B. The total number of nodes in the tree
C. The number of leaf nodes in the tree
D. The number of edges on the longest path from root to a leaf
Solution
Step 1: Understand the definition of height in a binary tree
The height is the longest path from the root node down to the farthest leaf node, counted by edges.
Step 2: Compare options with the definition
Only The number of edges on the longest path from root to a leaf correctly describes the height as the number of edges on the longest root-to-leaf path.
Final Answer:
The number of edges on the longest path from root to a leaf -> Option D
Quick Check:
Height = longest root-to-leaf edges [OK]
Hint: Height counts edges, not nodes, from root to deepest leaf [OK]
Common Mistakes:
Confusing height with total nodes
Counting nodes instead of edges
Thinking height is number of leaves
2. Which Go function signature correctly defines a recursive function to find the height of a binary tree node?
easy
A. func height(root Node) string
B. func height(root *Node) int
C. func height(root *Node) bool
D. func height(root Node) float64
Solution
Step 1: Identify correct parameter and return types for height function
The function should accept a pointer to a Node and return an integer representing height.
Step 2: Match options with correct signature
func height(root *Node) int matches: func height(root *Node) int. Others have wrong parameter types or return types.
Final Answer:
func height(root *Node) int -> Option B
Quick Check:
Pointer input and int output for height [OK]
Hint: Height returns int; input is pointer to Node [OK]
Common Mistakes:
Using value instead of pointer for root
Returning wrong data type like bool or string
Incorrect function parameter types
3. What is the output of this Go code snippet that calculates the height of a binary tree?
The root has left child (leaf) and right child with its own right child (leaf). The longest path is root -> right -> right, which has 3 nodes and 2 edges.
Step 2: Calculate height as edges + 1
The function returns 1 + max height of children. The longest path has 2 edges, so height = 3.
Final Answer:
3 -> Option A
Quick Check:
Height counts edges + 1 for nodes [OK]
Hint: Count longest path edges + 1 for height [OK]
Common Mistakes:
Counting nodes instead of edges
Ignoring nil child nodes
Confusing left and right subtree heights
4. Identify the bug in this Go function that calculates the height of a binary tree:
A. Returning -1 for nil node causes incorrect height calculation
B. Missing base case for leaf nodes
C. Using pointers incorrectly for root
D. Not handling empty tree separately
Solution
Step 1: Check base case return value
The function returns -1 for nil nodes, which causes height to be off by one compared to standard definition.
Step 2: Understand correct base case for height
Height of empty tree should be 0 or 0 edges; returning -1 leads to negative heights and incorrect results.
Final Answer:
Returning -1 for nil node causes incorrect height calculation -> Option A
Quick Check:
Base case should return 0 for nil [OK]
Hint: Base case for nil must return 0, not -1 [OK]
Common Mistakes:
Returning -1 instead of 0 for nil
Confusing base case with leaf node
Not adding 1 after recursive calls
5. Given a binary tree where each node stores an integer, write a recursive Go function to find the height of the tree and also return the sum of all node values at the deepest level. Which approach correctly combines these tasks?
hard
A. Use iterative BFS to find height and sum nodes at last level in one pass
B. Calculate height first, then traverse tree again to sum deepest level nodes separately
C. Use a recursive function that returns both height and sum at deepest level by comparing left and right subtree results
D. Use recursion to sum all nodes and ignore height calculation
Solution
Step 1: Understand combined task requirements
We need height and sum of nodes at deepest level in one function efficiently.
Step 2: Evaluate approaches
Use a recursive function that returns both height and sum at deepest level by comparing left and right subtree results uses recursion returning height and sum together, avoiding multiple traversals.
Step 3: Compare other options
Calculate height first, then traverse tree again to sum deepest level nodes separately does two traversals, less efficient. Use iterative BFS to find height and sum nodes at last level in one pass is valid but iterative BFS is not recursive. Use recursion to sum all nodes and ignore height calculation ignores height, so incomplete.
Final Answer:
Use a recursive function that returns both height and sum at deepest level by comparing left and right subtree results -> Option C
Quick Check:
Combine height and sum in one recursive pass [OK]
Hint: Return height and sum together recursively to avoid extra traversal [OK]
Common Mistakes:
Doing two separate traversals
Ignoring sum at deepest level
Using iterative approach when recursion asked
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.