在樹形結構中,TreeNode
是一個用于表示節點的類。每個節點包含一個值(如整數、字符串等)以及指向其子節點的引用。樹形結構可以使用不同的存儲方法,以下是兩種常見的方法:
鄰接表是一種使用列表或字典來存儲樹形結構的方法。每個節點都有一個與之關聯的列表,用于存儲其子節點的引用。這種方法的優點是易于實現和理解,但可能會占用更多的內存。
class TreeNode:
def __init__(self, value):
self.value = value
self.children = []
# 添加子節點
def add_child(parent, child):
parent.children.append(child)
鄰接矩陣是一種使用二維數組來存儲樹形結構的方法。數組的每個元素表示一個節點對之間的關系。如果節點 i 是節點 j 的子節點,則矩陣中的 matrix[i][j]
值為 1(或任何非零值)。這種方法的優點是可以直接查詢兩個節點之間的關系,但可能會占用大量內存,特別是當樹的節點數量很大時。
class TreeNode:
def __init__(self, value):
self.value = value
class Tree:
def __init__(self, num_nodes):
self.num_nodes = num_nodes
self.adjacency_matrix = [[0 for _ in range(num_nodes)] for _ in range(num_nodes)]
# 添加子節點
def add_child(tree, parent_index, child_index):
tree.adjacency_matrix[parent_index][child_index] = 1
這兩種方法都可以用于表示樹形結構,但具體選擇哪種方法取決于問題的需求和性能要求。