Beginner design of biological sampling database
I would rename TreeData to measurements.  

Also, unless you really need the Visits table, I wouldn't use it.  If designed properly your database would look something like this if you included the visits table:



Using the visits table would complicate some of the queries that you're wanting answered.  For example, to answer number one you might use something like this in sql server:

select
     t.treeid,
     max(m.height)-min(m.height) as Growth
from trees t
     inner join measurements m
          on t.treeid=m.treeid
     inner join visits v
          on m.visitid=t.visitid
where v.date&gt;=dateadd(y,-2,getdate())
group by t.treeid


without the visits table you could rewrite that like this:

select
     m.treeid,
     max(m.height)-min(m.height) as Growth
from measurements m
where m.date&gt;=dateadd(y,-2,getdate())
group by m.treeid