

"""simple docstring"""


from __future__ import annotations





class    snake_case     :

				def __init__(     self							:    List[str]					,  UpperCamelCase__							:    int)->       Dict:



						'''simple docstring'''


						__lowerCAmelCase:	Optional[Any]   				=      data
						__lowerCAmelCase:	List[Any]   				=      None
						__lowerCAmelCase:	Union[str, Any]   				=      None






def    a__   (   __SCREAMING_SNAKE_CASE			)     ->     Union[str, Any]:  # In Order traversal of the tree
		if tree:
				display(tree.left			)
				print(tree.data			)
				display(tree.right			)






def    a__   (   __SCREAMING_SNAKE_CASE			)     ->     Optional[int]:
		return 1 + max(depth_of_tree(tree.left			) ,			depth_of_tree(tree.right			)			) if tree else 0






def    a__   (   __SCREAMING_SNAKE_CASE			)     ->     Optional[int]:
		if not tree:
				return True
		if tree.left and tree.right:
				return is_full_binary_tree(tree.left			) and is_full_binary_tree(tree.right			)
		else:
				return not tree.left and not tree.right






def    a__   (   )     ->     Optional[Any]:  # Main function for testing.
		__lowerCAmelCase:	Any   				=      Node(1			)
		__lowerCAmelCase:	List[Any]   				=      Node(2			)
		__lowerCAmelCase:	List[Any]   				=      Node(3			)
		__lowerCAmelCase:	Optional[Any]   				=      Node(4			)
		__lowerCAmelCase:	int   				=      Node(5			)
		__lowerCAmelCase:	str   				=      Node(6			)
		__lowerCAmelCase:	Tuple   				=      Node(7			)
		__lowerCAmelCase:	Dict   				=      Node(8			)
		__lowerCAmelCase:	List[str]   				=      Node(9			)

		print(is_full_binary_tree(__SCREAMING_SNAKE_CASE			)			)
		print(depth_of_tree(__SCREAMING_SNAKE_CASE			)			)
		print("Tree is: "			)
		display(__SCREAMING_SNAKE_CASE			)


if __name__ == "__main__":
			main()






"""simple docstring"""


from __future__ import annotations

from decimal import Decimal
from math import *  # noqa: F403

from sympy import diff






def    a__   (   __SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE ,			__SCREAMING_SNAKE_CASE = 1_0**-1_0			)     ->     float:
		__lowerCAmelCase:	Union[str, Any]   				=      a
		while True:
				__lowerCAmelCase:	Optional[int]   				=      Decimal(__SCREAMING_SNAKE_CASE			) - (
				    Decimal(eval(__SCREAMING_SNAKE_CASE			)			) / Decimal(eval(str(diff(__SCREAMING_SNAKE_CASE			)			)			)			)  # noqa: S307
				)
				# This number dictates the accuracy of the answer
				if abs(eval(__SCREAMING_SNAKE_CASE			)			) < precision:  # noqa: S307
						return float(__SCREAMING_SNAKE_CASE			)


# Let's Execute
if __name__ == "__main__":
			# Find root of trigonometric function
			# Find value of pi
			print(F'''The root of sin(x) = 0 is {newton_raphson("sin(x)", 2)}''')
			# Find root of polynomial
			print(F'''The root of x**2 - 5*x + 2 = 0 is {newton_raphson("x**2 - 5*x + 2", 0.4)}''')
			# Find Square Root of 5
			print(F'''The root of log(x) - 1 = 0 is {newton_raphson("log(x) - 1", 2)}''')
			# Exponential Roots
			print(F'''The root of exp(x) - 1 = 0 is {newton_raphson("exp(x) - 1", 0)}''')


