So the aim of the exercise is to give a height (either at ground or top height) for each tree using the Lidar information?
Does the lidar information only have one value for each geometric point?
If you are trying to determine the height of the trees, you should be able to do a join to the tree shapefile. Simply select "Maximum" as the attribute you wish to summarise it by (however if tree canopies overlap it may give you the height of the taller tree). Again this will depend on your lidar information (does it drill down through multiple tree canopies?)
If you are trying to determine the ground level (base height) of each tree then you will need to ensure that the lidar information only contains the ground elevations and then you could do a "average" summary (or convert the tree polygons to points and then a join between the two points ... this assumes that the tree bole is at the centroid of the circles though).
You shouldn't have to split the polygon into individual shapefiles though to do the processing. It really depends on the information you have available, and what your objectives are.