How do I make the edges in the tree have same length and have some good symmetry? It looks kinda ugly.
It needs to look more symmetric. Is there a simple way to achieve this goal?
\begin{figure}[h]
\begin{tikzpicture}[
> = stealth,
shorten > = 1pt,
auto,
node distance = 2cm,
semithick % line style
]
\tikzstyle{state}=[
draw = black,
thick,
fill = white,
minimum size = 4mm
]
\node[state][circle, draw](hub) {$hub$};
\node[state][circle, draw] (a) [below left of=hub] {$a$};
\node[state][circle, draw] (b) [below right of=hub] {$b$};
\node[state][circle, draw] (c) [below left of=a] {$c$};
\node[state][circle, draw] (d) [right of=c] {$d$};
\node[state][circle, draw] (e) [below left of=c] {$e$};
\node[state][circle, draw] (f) [right of=e] {$f$};
\node[state][circle, draw] (g) [right of=d] {$g$};
\node[state][circle, draw] (h) [right of=g] {$h$};
\path[->] (a) edge node {100} (hub);
\path[->] (b) edge node {85} (hub);
\path[->] (c) edge node {35} (a);
\path[->] (d) edge node {55} (a);
\path[->] (e) edge node {10} (c);
\path[->] (f) edge node {15} (c);
\path[->] (g) edge node {40} (b);
\path[->] (h) edge node {25} (b);
\node[state][circle, draw] (u) [above left of=hub] {$u$};
\node[state][circle, draw] (v) [above right of=hub] {$v$};
\node[state][circle, draw] (w) [above left of=u] {$w$};
\node[state][circle, draw] (x) [right of=w] {$x$};
\node[state][circle, draw] (y) [right of=x] {$y$};
\node[state][circle, draw] (z) [right of=y] {$z$};
\path[->] (hub) edge node {125} (u);
\path[->] (hub) edge node {25} (v);
\path[->] (u) edge node {50} (w);
\path[->] (u) edge node {60} (x);
\path[->] (v) edge node {10} (y);
\path[->] (v) edge node {12} (z);
\draw (0,-6) node[above,xshift=0.7cm]{$ \textsc{Pos and Neg heap represented together as a single structure}$};
\end{tikzpicture}
\end{figure}