From 263f947d0886004fa1b2e9ab705fd16960cfac42 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sat, 17 Apr 2021 08:07:15 +0200 Subject: [PATCH 1/3] binary_tree_traversals.py: Simplify with dataclasses --- .../binary_tree/binary_tree_traversals.py | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/data_structures/binary_tree/binary_tree_traversals.py b/data_structures/binary_tree/binary_tree_traversals.py index 7c0ee1dbbc2a..fb0726ca63bc 100644 --- a/data_structures/binary_tree/binary_tree_traversals.py +++ b/data_structures/binary_tree/binary_tree_traversals.py @@ -1,24 +1,16 @@ # https://en.wikipedia.org/wiki/Tree_traversal +from dataclasses import dataclass -class Node: - """ - A Node has data variable and pointers to its left and right nodes. - """ - - def __init__(self, data): - self.left = None - self.right = None - self.data = data +@dataclass +class Node(object): + data: int + left: "Node" = None + right: "Node" = None def make_tree() -> Node: - root = Node(1) - root.left = Node(2) - root.right = Node(3) - root.left.left = Node(4) - root.left.right = Node(5) - return root + return Node(1, Node(2, Node(4), Node(5)), Node(3)) def preorder(root: Node): From 9d19646146b89ce6ad195a41d9d1ca7ede9a48f4 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 21 Apr 2021 16:24:03 +0200 Subject: [PATCH 2/3] Update data_structures/binary_tree/binary_tree_traversals.py Co-authored-by: Dhruv Manilawala --- data_structures/binary_tree/binary_tree_traversals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/binary_tree/binary_tree_traversals.py b/data_structures/binary_tree/binary_tree_traversals.py index fb0726ca63bc..2e81294e5575 100644 --- a/data_structures/binary_tree/binary_tree_traversals.py +++ b/data_structures/binary_tree/binary_tree_traversals.py @@ -3,7 +3,7 @@ @dataclass -class Node(object): +class Node: data: int left: "Node" = None right: "Node" = None From feac52b46fd78409f75e15df8032ee6d0e301687 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Thu, 22 Apr 2021 12:27:48 +0200 Subject: [PATCH 3/3] Optional["Node"] --- data_structures/binary_tree/binary_tree_traversals.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data_structures/binary_tree/binary_tree_traversals.py b/data_structures/binary_tree/binary_tree_traversals.py index 2e81294e5575..7857880dada9 100644 --- a/data_structures/binary_tree/binary_tree_traversals.py +++ b/data_structures/binary_tree/binary_tree_traversals.py @@ -1,12 +1,13 @@ # https://en.wikipedia.org/wiki/Tree_traversal from dataclasses import dataclass +from typing import Optional @dataclass class Node: data: int - left: "Node" = None - right: "Node" = None + left: Optional["Node"] = None + right: Optional["Node"] = None def make_tree() -> Node: