树和图都是数据结构中的重要概念,它们在表示和处理复杂关系时具有不同的特点和应用场景。以下是对树和图的基础概念、优势、类型、应用场景以及常见问题的详细解答:
树是一种层次结构的数据结构,由节点(Node)和边(Edge)组成。树有一个根节点(Root Node),每个节点可以有零个或多个子节点,但没有父节点的节点称为根节点,除了根节点外,每个节点有且只有一个父节点。
图是由节点(Vertex)和边(Edge)组成的集合,边可以是有向的(Directed Edge)或无向的(Undirected Edge)。图中节点之间的关系可以是任意的,没有固定的层次结构。
class TreeNode:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
def insert(self, value):
if not self.root:
self.root = TreeNode(value)
else:
self._insert_recursive(self.root, value)
def _insert_recursive(self, node, value):
if value < node.value:
if node.left is None:
node.left = TreeNode(value)
else:
self._insert_recursive(node.left, value)
else:
if node.right is None:
node.right = TreeNode(value)
else:
self._insert_recursive(node.right, value)
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
print(start, end=' ')
for next_node in graph[start] - visited:
dfs(graph, next_node, visited)
return visited
graph = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
dfs(graph, 'A')
通过以上内容,您可以全面了解树和图的区别及其在不同场景下的应用。
领取专属 10元无门槛券
手把手带您无忧上云