【常用算法:查找篇】8.二叉树完全指南:从核心原理到高效算法实战

在这里插入图片描述

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

在这里插入图片描述

1. 节点定义与核心术语

# Python二叉树节点定义
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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值