Determine if a binary tree is balanced
Came across this post as I was answering the same question in this book. My approach was also similar in solving this. I will post what I found 
as an answer since I cannot comment.  

First, I think the or condition for checking the terminating 
node is incorrect. It should be a and condition to my understanding. I think we need to identify whether the current node is a leaf node before 
updating depths. 
For the following tree this would give a max depth of 3 and min depth of 1, which is incorrect. I did this in C++ as shown below.  

      5
     /  \
    4    7
   /    / \
  1    6   8 
 /
0  


 void FindMinMax(int &amp;min,int &amp;max,Node *np,int height)
 {
     if(np==NULL) return;
     FindMinMax(min,max,np-&gt;left,height+1);
     FindMinMax(min,max,np-&gt;right,height+1);

     if(np-&gt;left==NULL || np-&gt;right==NULL)
     {
         if(min&gt;height) min = height;
         if(max&lt;height) max = height;
     }
 }


Second, I am not sure whether there are differences in the versions. 
In my book the question 4.1 is about checking whether a binary tree is balanced. This is defined as 


  heights of the two subtrees of any node never differ by more than one


If this is the requirement I think this algorithm won't work. 
Check the first two answers of this question. I think this algorithms checks whether the difference between farthest and closest leaves from root differ by more than one. 

Edit: Here I assumed min max corresponds to maximum and minimum depths to leaf nodes.