Closed1
完全二分木をXMLで表示するやつ

import xml.etree.ElementTree as ET
class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def cbt(n):
if n <= 0:
return None
nodes = [Node(i) for i in range(1, n + 1)]
for i in range(n):
left_index = 2 * i + 1
right_index = 2 * i + 2
if left_index < n:
nodes[i].left = nodes[left_index]
if right_index < n:
nodes[i].right = nodes[right_index]
return nodes[0]
def node_to_xml(node):
if node is None:
return None
element = ET.Element("node", value=str(node.value))
if node.left:
left_element = node_to_xml(node.left)
if left_element is not None:
element.append(left_element)
if node.right:
right_element = node_to_xml(node.right)
if right_element is not None:
element.append(right_element)
return element
root = node_to_xml(cbt(7))
if root is not None:
ET.indent(ET.ElementTree(root), space=" ")
print(ET.tostring(root, encoding="utf-8").decode("utf-8"))
<node value="1">
<node value="2">
<node value="4" />
<node value="5" />
</node>
<node value="3">
<node value="6" />
<node value="7" />
</node>
</node>
このスクラップは3ヶ月前にクローズされました