Decision tree vs. KNN
They serve different purposes. 

KNN is unsupervised, Decision Tree (DT) supervised.
(KNN is supervised learning while K-means is unsupervised, I think this answer causes some confusion.)
KNN is used for clustering, DT for classification. (Both are used for classification.)

KNN determines neighborhoods, so there must be a distance metric. This implies that all the features must be numeric. Distance metrics may be affected by varying scales between attributes and also high-dimensional space.

DT, on the other hand, predicts a class for a given input vector. The attributes may be numeric or nominal.

So, if you want to find similar examples you could use KNN. If you want to classify examples you could use DT.