Python树结构实现详解
一、树结构基础认知
1.1 树的四大特征
1.2 核心组件解析
class TreeNode:
def __init__(self, data):
self.data = data # 节点存储的数据
self.children = [] # 子节点容器(多叉树特性)
def add_child(self, node):
self.children.append(node)
二、树结构的Python实现
2.1 构建多叉树实例
我们构建如下结构的树:
Computer
/ | \
HDD Memory CPU
/ \
RAM Cache
代码实现:
# 创建根节点
root = TreeNode("Computer")
# 添加一级子节点
hdd = TreeNode("HDD")
memory = TreeNode("Memory")
cpu = TreeNode("CPU")
root.add_child(hdd)
root.add_child(memory)
root.add_child(cpu)
# 添加二级子节点
ram = TreeNode("RAM")
cache = TreeNode("Cache")
memory.add_child(ram)
memory.add_child(cache)
2.2 遍历算法实现
深度优先搜索(DFS)
def dfs(node):
if node:
print(node.data, end=' → ')
for child in node.children:
dfs(child)
# 输出:Computer → HDD → Memory → RAM → Cache → CPU
广度优先搜索(BFS)
from collections import deque
def bfs(root):
queue = deque([root])
while queue:
node = queue.popleft()
print(node.data, end=' → ')
queue.extend(node.children)
# 输出:Computer → HDD → Memory → CPU → RAM → Cache
三、树结构的重要变体
3.1 二叉树(Binary Tree)
特性:每个节点最多2个子节点(left/right)
class BinaryTreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
# 表达式树示例: (2+3)*4
root = BinaryTreeNode('*')
root.left = BinaryTreeNode('+')
root.left.left = BinaryTreeNode(2)
root.left.right = BinaryTreeNode(3)
root.right = BinaryTreeNode(4)
3.2 二叉搜索树(BST)
特性:左子树值 < 根 < 右子树值
插入操作实现:
def insert(root, value):
if not root:
return BSTNode(value)
if value < root.val:
root.left = insert(root.left, value)
else:
root.right = insert(root.right, value)
return root
四、六大应用场景实战
4.1 文件系统模拟
class FileSystemNode:
def __init__(self, name, is_dir=False):
self.name = name
self.is_dir = is_dir
self.children = []
# 构建示例
root = FileSystemNode("/", True)
etc = FileSystemNode("etc", True)
root.add_child(etc)
etc.add_child(FileSystemNode("hosts"))
4.2 其他典型应用
- DOM树 – 网页元素解析
- 决策树 – 机器学习分类
- 语法树 – 编译器设计
- 路由树 – 网络路径规划
- 目录树 – 知识管理系统
- 游戏树 – AI对战决策
五、学习路线建议
5.1 树结构学习五步法
- 理解基本概念 → 2. 手写简单实现 → 3. 掌握遍历算法
- 学习平衡策略(AVL树) → 5. 实践综合应用
5.2 推荐练习题目
难度 | LeetCode题号 | 题目描述 |
---|---|---|
初级 | 144 | 二叉树前序遍历 |
中级 | 105 | 从前序与中序构造二叉树 |
高级 | 297 | 二叉树的序列化与反序列化 |
六、知识拓展方向
6.1 高阶树结构
6.2 可视化工具推荐
作者:不辉放弃