python如何将二叉树存储为邻接矩阵
时间: 2023-10-21 14:07:14 浏览: 98
将二叉树存储为邻接矩阵需要以下步骤:
1. 确定邻接矩阵的大小,即矩阵的行数和列数。对于一个有n个节点的二叉树,邻接矩阵的大小为n x n。
2. 初始化邻接矩阵。将矩阵中的所有元素初始化为0,表示所有节点之间都没有连边。
3. 遍历二叉树,将节点之间的连通关系记录在邻接矩阵中。对于每个节点,如果它有左子节点,则在邻接矩阵中标记左子节点与该节点的连通关系,即将矩阵中该位置的值赋为1。同样的,如果该节点有右子节点,则在邻接矩阵中标记右子节点与该节点的连通关系。
下面是Python代码示例:
```
class Node:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
def binary_tree_to_adjacency_matrix(root):
# 获取二叉树的节点个数
def get_node_count(root):
if not root:
return 0
return 1 + get_node_count(root.left) + get_node_count(root.right)
n = get_node_count(root)
adjacency_matrix = [[0] * n for _ in range(n)]
# 将节点之间的连通关系记录在邻接矩阵中
def dfs(node, index):
if not node:
return
if node.left:
adjacency_matrix[index][index * 2 + 1] = 1
adjacency_matrix[index * 2 + 1][index] = 1
dfs(node.left, index * 2 + 1)
if node.right:
adjacency_matrix[index][index * 2 + 2] = 1
adjacency_matrix[index * 2 + 2][index] = 1
dfs(node.right, index * 2 + 2)
dfs(root, 0)
return adjacency_matrix
```
其中,Node类表示二叉树的节点,binary_tree_to_adjacency_matrix函数接受二叉树的根节点作为参数,返回邻接矩阵。get_node_count函数计算二叉树的节点个数,dfs函数遍历二叉树,将节点之间的连通关系记录在邻接矩阵中。
阅读全文