






from __future__ import annotations


class 		lowerCAmelCase_							:





     def __init__(  self       ,   _UpperCAmelCase     )		->							None:
        lowerCamelCase											=value
        lowerCamelCase											=None
        lowerCamelCase											=None




class 		lowerCAmelCase_							:
     __lowerCamelCase					:						int





     def __init__(  self     )		->							None:
        lowerCamelCase											=0





     def 	lowerCamelCase       (  self       ,   _UpperCAmelCase       ,   _UpperCAmelCase     )		->							None:
        if node is None:
           return

        if path_sum == self.target:
           self.paths += 1

        if node.left:
           self.depth_first_search(node.left       ,   path_sum + node.left.value     )
        if node.right:
           self.depth_first_search(node.right       ,   path_sum + node.right.value     )





     def 	lowerCamelCase       (  self       ,   _UpperCAmelCase       ,   _UpperCAmelCase = None     )		->							int:
        if node is None:
           return 0
        if target is not None:
           lowerCamelCase											=target

        self.depth_first_search(_UpperCAmelCase       ,   node.value     )
        self.path_sum(node.left     )
        self.path_sum(node.right     )

        return self.paths


if __name__ == "__main__":
   import doctest

   doctest.testmod()







from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# Load iris file
_UpperCAmelCase				:	Optional[int]    						=    load_iris()
iris.keys()


print(f"Target names: \n {iris.target_names} ")
print(f"\n Features: \n {iris.feature_names}")

# Train set e Test set
_UpperCAmelCase						,						_UpperCAmelCase						,						_UpperCAmelCase						,						_UpperCAmelCase				:	List[Any]    						=    train_test_split(
    iris['data'], iris['target'], random_state=4
)

# KNN

_UpperCAmelCase				:	Optional[int]    						=    KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train, y_train)

# new array to test
_UpperCAmelCase				:	List[Any]    						=    [[1, 2, 1, 4], [2, 3, 4, 5]]

_UpperCAmelCase				:	Tuple    						=    knn.predict(X_new)

print(
    f"\nNew array: \n {X_new}\n\nTarget Names Prediction: \n"
    f" {iris['target_names'][prediction]}"
)