ZahirJS commited on
Commit
05beaf5
·
verified ·
1 Parent(s): 6a177c8

Update binary_tree_generator.py

Browse files
Files changed (1) hide show
  1. binary_tree_generator.py +0 -157
binary_tree_generator.py CHANGED
@@ -1,160 +1,3 @@
1
- # import graphviz
2
- # import json
3
- # from tempfile import NamedTemporaryFile
4
- # import os
5
-
6
- # def generate_binary_tree_diagram(json_input: str, output_format: str) -> str:
7
- # """
8
- # Generates a binary tree diagram from JSON input.
9
-
10
- # Args:
11
- # json_input (str): A JSON string describing the binary tree structure.
12
- # It must follow the Expected JSON Format Example below.
13
-
14
- # Expected JSON Format Example:
15
- # {
16
- # "root": {
17
- # "id": "root",
18
- # "label": "50",
19
- # "left": {
20
- # "id": "left_1",
21
- # "label": "30",
22
- # "left": {
23
- # "id": "left_2",
24
- # "label": "20"
25
- # },
26
- # "right": {
27
- # "id": "right_2",
28
- # "label": "40"
29
- # }
30
- # },
31
- # "right": {
32
- # "id": "right_1",
33
- # "label": "70",
34
- # "left": {
35
- # "id": "left_3",
36
- # "label": "60"
37
- # },
38
- # "right": {
39
- # "id": "right_3",
40
- # "label": "80"
41
- # }
42
- # }
43
- # }
44
- # }
45
-
46
- # Returns:
47
- # str: The filepath to the generated PNG image file.
48
- # """
49
- # try:
50
- # if not json_input.strip():
51
- # return "Error: Empty input"
52
-
53
- # data = json.loads(json_input)
54
-
55
- # if 'root' not in data:
56
- # raise ValueError("Missing required field: root")
57
-
58
- # dot = graphviz.Digraph(
59
- # name='BinaryTree',
60
- # format='png',
61
- # graph_attr={
62
- # 'rankdir': 'TB', # Top-to-Bottom layout
63
- # 'splines': 'line', # Straight lines
64
- # 'bgcolor': 'white', # White background
65
- # 'pad': '0.5', # Padding around the graph
66
- # 'nodesep': '0.8', # Spacing between nodes
67
- # 'ranksep': '1.0' # Spacing between levels
68
- # }
69
- # )
70
-
71
- # base_color = '#19191a'
72
-
73
- # def add_binary_tree_nodes(node, current_depth=0):
74
- # """
75
- # Add binary tree nodes recursively with proper styling.
76
- # """
77
- # if not node:
78
- # return
79
-
80
- # node_id = node.get('id', f'node_{current_depth}')
81
- # node_label = node.get('label', 'Node')
82
-
83
-
84
- # lightening_factor = 0.12
85
-
86
-
87
- # if not isinstance(base_color, str) or not base_color.startswith('#') or len(base_color) != 7:
88
- # base_color_safe = '#19191a'
89
- # else:
90
- # base_color_safe = base_color
91
-
92
- # base_r = int(base_color_safe[1:3], 16)
93
- # base_g = int(base_color_safe[3:5], 16)
94
- # base_b = int(base_color_safe[5:7], 16)
95
-
96
-
97
- # current_r = base_r + int((255 - base_r) * current_depth * lightening_factor)
98
- # current_g = base_g + int((255 - base_g) * current_depth * lightening_factor)
99
- # current_b = base_b + int((255 - base_b) * current_depth * lightening_factor)
100
-
101
-
102
- # current_r = min(255, current_r)
103
- # current_g = min(255, current_g)
104
- # current_b = min(255, current_b)
105
-
106
- # node_color = f'#{current_r:02x}{current_g:02x}{current_b:02x}'
107
-
108
- # font_color = 'white' if current_depth * lightening_factor < 0.6 else 'black'
109
-
110
- # font_size = max(9, 14 - current_depth)
111
-
112
-
113
- # dot.node(
114
- # node_id,
115
- # node_label,
116
- # shape='circle',
117
- # style='filled',
118
- # fillcolor=node_color,
119
- # fontcolor=font_color,
120
- # fontsize=str(font_size),
121
- # width='0.8',
122
- # height='0.8'
123
- # )
124
-
125
- # left_child = node.get('left')
126
- # if left_child:
127
- # add_binary_tree_nodes(left_child, current_depth + 1)
128
- # left_id = left_child.get('id', f'node_{current_depth + 1}_left')
129
- # dot.edge(
130
- # node_id,
131
- # left_id,
132
- # color='#4a4a4a',
133
- # arrowsize='0.8'
134
- # )
135
-
136
- # right_child = node.get('right')
137
- # if right_child:
138
- # add_binary_tree_nodes(right_child, current_depth + 1)
139
- # right_id = right_child.get('id', f'node_{current_depth + 1}_right')
140
- # dot.edge(
141
- # node_id,
142
- # right_id,
143
- # color='#4a4a4a',
144
- # arrowsize='0.8'
145
- # )
146
-
147
- # add_binary_tree_nodes(data['root'], current_depth=0)
148
-
149
- # with NamedTemporaryFile(delete=False, suffix=f'.{output_format}') as tmp:
150
- # dot.render(tmp.name, format=output_format, cleanup=True)
151
- # return f"{tmp.name}.{output_format}"
152
-
153
- # except json.JSONDecodeError:
154
- # return "Error: Invalid JSON format"
155
- # except Exception as e:
156
- # return f"Error: {str(e)}"
157
-
158
  import graphviz
159
  import json
160
  from tempfile import NamedTemporaryFile
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import graphviz
2
  import json
3
  from tempfile import NamedTemporaryFile