label encoding or one-hot encoding or none when using decision tree?
If we are using label encoder we would only need to convert gender however if that maps male = 0, female = 1 wouldn't the machine treat female &gt; male?

You are correct, using label encoder to encode categorical features is wrong in general, for the reason you mention. Note that scikit documentation advises against using it with features, it's supposed to be used only with a response variable.
In the particular case of a binary variable like &quot;gender&quot; to be used in decision trees, it actually does not matter to use label encoder because the only thing the decision tree algorithm can do is to split the variable into two values: whether the condition is gender &gt; 0.5 or gender == female would give the exact same results.
Also note that whether the variable is interpreted as ordinal or not is a matter of implementation. For example in Weka it's possible to specify that a feature is categorical (&quot;nominal&quot;).

and if it ignores ordinality it will ignore level1 &lt; level2.

Not necessarily, because in theory it's possible to have features with different types (e.g. some categorical and some numerical). However this may depend on the implementation as well.