Why do derivation tree not make sense for context-sensitive grammars?
For context-free grammars, the order in which you execute rules does not matter. Formally, let

$\qquad \gamma = w_1 A_1 w_2 \dots w_{n-1} A_{n-1} w_n$

with $A_i \in N$ and $w_i \in T^*$ for all $i$. Then, any order of applying rules $A_i \to \alpha_i$ yields the same sentential form. Thus, it makes sense to identify $\gamma$ with a level in a syntax tree -- the children of all the nodes (if any) are independent of each other.

For context-sensitive grammars, this is not true. Consider this grammar¹:

$\qquad\begin{align*} S\ \ &amp;\to AS \mid A \\ AS &amp;\to a \\ SA &amp;\to b \\ A\ \ \ &amp;\to c \end{align*}$

Observe how the set of applicable rules changes as soon as you start applying them! Therefore, while you can still imagine a tree structure here, the children are no longer independent. 

Also, you'd have to connect two nodes from higher levels each node -- and arbitrarily many for general CSGs. Since any symbol may influence the picking of many rules, this will give you a DAG, but no tree.




As has been aptly noted by commentes chi and fade2black, this grammar is not context-sensitive in the strict sense of the definition. I find it clearer to illustrate the issue; but still, this is a clearly context-sensitive variant:

$\qquad\begin{align*}
  S\ \ &amp;\to AS \mid AB \\
  AS &amp;\to CC \\
  SA &amp;\to DD \\
  A\ \ \ &amp;\to c \\
  B \ \ \ &amp;\to d \\ 
  C \ \ \ &amp;\to a \\
  D \ \ \ &amp;\to b
\end{align*}$