I have done this before, but have not generalized the result.
rectOffset = {.25,.1}; fontSize = 10 TreeForm[list, VertexRenderingFunction -> ({White, EdgeForm[Black], Rectangle[

Edit using tooltips
Using a “different approach”
The code is dirty, sorry, no time to clean it right now
rectOffset = {.33, .1}; fontSize = 9; p = Cases[ Cases[MakeBoxes[TreeForm@list, StandardForm], TooltipBox[x__] -> x, 7, Heads -> True], TagBox[x__, y__] -> DisplayForm[First@{x}], Heads -> True]; i = 0; TreeForm[list, VertexRenderingFunction -> ({White, EdgeForm[Black], Rectangle[#1 - rectOffset, #1 + rectOffset], Black, Tooltip[Text[Style[#2, fontSize], #1], p[[i++]]]} &)]
Exit

Edit 2
I think this version is better:
Clear["Global`*"]; list = Hold[ GraphPlotHighlight[edges : {((_ -> _) | {_ -> _, _}) ...}, hl : {___} : {}, opts : OptionsPattern[]] := Module[{verts, coords, g, sub}, 5]]; myTreeForm[exp_] := Module[{ps, tooltipText, i}, ps[text_] := Rasterize[Text[Style[text]], "RasterSize"]; tooltipText = Cases[Cases[MakeBoxes[TreeForm@list, StandardForm], TooltipBox[x__] -> x, 7, Heads -> True], TagBox[x__, y__] -> DisplayForm[First@{x}], Heads -> True]; i = 0; TreeForm[list, EdgeRenderingFunction -> ({Red, Line[
Exit:

Change 4 ... and last
Removed the code, removed the false functions and variables that just complicated:
myTreeForm[list_] := Module[{tooltipText, i}, tooltipText = Cases[Cases[MakeBoxes[TreeForm@list, StandardForm], TooltipBox[x__] -> x, 7, Heads -> True], TagBox[x__, y__] -> DisplayForm[First@{x}], Heads -> True]; i = 0; TreeForm[list, VertexRenderingFunction -> ({Tooltip[Inset[Rasterize[Text[" " <> ToString@#2 <> " "], Background -> LightBlue],
NTN!