Theoretically - Decision tree doesn't need any encoding for Categorical data. You just train, cross val and it will work.
But Library implementation mandates to encode in Numerical which is better to manage instead of a mix of Char and Number.
What that means is - We just have to encode our feature in some consistent form. We need not worry about LabelEncoder, Standardizing.
These operations are needed when the Model uses some Mathematics dependent algorithm to optimize e.g Gradient Descent (then 10 will be treated as 2 times 5 and will result in an error). But this is not the case with DecisionTree
My code on Iris. Using 3 ways to encode y.
As it is (0,1,2) - Comment 2, 3 to run
A random(Consistent) choice - Comment 3 to run
OHE - Comment 2 to rum
from sklearn import datasets
import numpy as np, pandas as pd
iris = datasets.load_iris()
X = iris.data
###Case 1 - Target as 0,1,2
y = iris.target
###Case 2 - Target as 31,41,71
#y = pd.Series(iris.target).map({0:31,1:41,2:71})
###Case 3 - Target as OneHot
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse=False)
y = ohe.fit_transform(y.reshape(-1,1))
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X,y,test_size=0.25)
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth=3)
model.fit(x_train, y_train)
model.score(x_test, y_test), model.predict(x_test)