As a warm up, let’s do another counting problem.
Given a binary tree containing Integers, let’s count the number of nodes where the value of the left child is greater than the value of the right child.

Before we start, remember the core of our approach to recursion:

Identify the base case—the simplest problem that you have to be able to immediately solve

Next, we’ll look at how to determine if a binary tree contains a certain value.
This problem introduces a new wrinkle to our usual approach to recursion!

// Binary Tree Search

Homework Restricted to Current CS 124 Students

A publicly-accessible version of this content is available at learncs.online.

Practice: Binary Tree Count Equal to Child

Created By: Geoffrey Challen

/ Version: 2020.11.0

Create a public class BinaryTreeCounter that provides a single class method named countEqualToEitherChild that
accepts a single BinaryTree and counts the number of nodes in the tree where the value at that node is equal to
either the value at its right child or the value at its left child. Keep in mind that not every node has a
right or left child, so you'll need to check for null carefully. (Or use try-catch!) However, you can assume
that all of the values in the tree are non-null.

For reference, cs125.trees.BinaryTree has the following public properties:

Next, let’s examine the performance of our recursive algorithms, and determine what O(n) category they belong in.

// Binary Tree Algorithm Analysis

Homework Restricted to Current CS 124 Students

A publicly-accessible version of this content is available at learncs.online.

Homework: BinaryTree Count Equal Children

Created By: Geoffrey Challen

/ Version: 2021.10.0

Create a public class BinaryTreeCounter that provides a single class method named countEqualChildren that
accepts a single BinaryTree<?> and counts the number of nodes in the tree that have two children with equal
values.
Keep in mind that not every node has a right or left child, so you'll need to check for null carefully.
(Or use try-catch!)
However, you can assume that all the values in the tree are non-null.

For reference, cs125.trees.BinaryTree has the following public properties: