
1、核心基础:结构与遍历

1. 节点定义与核心术语
class TreeNode:
def __init__(self, val=0):
self.val = val
self.left = None
self.right = None
关键术语表:
术语 |
说明 |
示例 |
根节点 |
树的顶层节点,无父节点 |
36 |
叶子节点 |
没有子节点的末端节点 |
7、32、38、80 |
深度 |
根节点到该节点的边数(根为0) |
节点7的深度为2 |
高度 |
节点到最远叶子节点的边数 |
根节点36的高度为5 |
2. 遍历算法:递归与迭代实现
(1)深度优先遍历(DFS)
遍历方式 |
访问顺序 |
Python递归实现 |
C++迭代实现(栈) |
前序 |
根→左→右 |
res.append(root.val); preorder(root.left); preorder(root.right) |
cpp<br>stack.push(root);<br>while (!stack.empty()) {<br> TreeNode* curr = stack.top(); stack.pop();<br> res.push_back(curr->val);<br> if (curr->right) stack.push(curr->right);<br> if (curr->left) stack.push(curr->left);<br>} |
中序 |
左→根→右 |
inorder(root.left); res.append(root.val); inorder(root.right) |
常用于BST有序输出 |
后序 |
左→右→根 |
postorder(root.left); postorder(root.right); res.append(root.val) |
用于内存释放操作 |
(2)广度优先遍历(BFS)
from collections import deque
def level_order(root):
if not root: return []
q, res = deque([root]), []
while q:
level = []
for _ in range(len(q)):
node = q.popleft()
level.append(node.val)
if node.left: q.append(node.left)
if node.right: q.append(node.right)
res.append(level)
return res
2、核心操作:查找、插入与删除
1. 节点查找(递归实现)
def