二叉树算法实战指南

二叉树基础结构

二叉树的每个节点包含三个部分:数据域、左子节点指针和右子节点指针。用C++定义如下:

struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};

Python实现通常用类表示:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

核心遍历方法

递归遍历模板

void traverse(TreeNode* root) {
    if (!root) return;
    // 前序位置
    traverse(root->left);
    // 中序位置  
    traverse(root->right);
    // 后序位置
}

迭代遍历实现 层次遍历(BFS)示例:

from collections import deque
def levelOrder(root):
    if not root: return []
    q = deque([root])
    res = []
    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

关键操作接口

插入节点

public TreeNode insert(TreeNode root, int val) {
    if (root == null) return new TreeNode(val);
    if (val < root.val) 
        root.left = insert(root.left, val);
    else 
        root.right = insert(root.right, val);
    return root;
}

删除节点 需要考虑三种情况:

  • 无子节点:直接删除
  • 只有一个子节点:用子节点替换
  • 有两个子节点:用右子树最小节点替换

OJ实战技巧

路径总和问题

def hasPathSum(root, target):
    if not root: return False
    if not root.left and not root.right:
        return target == root.val
    return hasPathSum(root.left, target-root.val) or hasPathSum(root.right, target-root.val)

最近公共祖先

TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
    if (!root || root == p || root == q) return root;
    auto left = lowestCommonAncestor(root->left, p, q);
    auto right = lowestCommonAncestor(root->right, p, q);
    if (left && right) return root;
    return left ? left : right;
}

性能优化策略

  • 对于频繁查询的问题,考虑使用哈希表存储节点信息
  • 在递归过程中利用返回值传递多个信息时,可以使用结构体或pair
  • 对于大规模数据,迭代法通常比递归法更节省内存空间

常见错误排查

  • 空指针异常:始终检查节点是否为null
  • 无限递归:确保递归终止条件正确
  • 状态污染:在回溯算法中注意恢复现场
  • 边界条件:特别注意树为空或单节点的情况

BbS.okapop123.sbs/PoSt/1122_851074.HtM
BbS.okapop124.sbs/PoSt/1122_666591.HtM
BbS.okapop125.sbs/PoSt/1122_699533.HtM
BbS.okapop126.sbs/PoSt/1122_135605.HtM
BbS.okapop127.sbs/PoSt/1122_292155.HtM
BbS.okapop128.sbs/PoSt/1122_321021.HtM
BbS.okapop129.sbs/PoSt/1122_259299.HtM
BbS.okapop130.sbs/PoSt/1122_934415.HtM
BbS.okapop131.sbs/PoSt/1122_472398.HtM
BbS.okapop132.sbs/PoSt/1122_093392.HtM
BbS.okapop123.sbs/PoSt/1122_603829.HtM
BbS.okapop124.sbs/PoSt/1122_727498.HtM
BbS.okapop125.sbs/PoSt/1122_570673.HtM
BbS.okapop126.sbs/PoSt/1122_788487.HtM
BbS.okapop127.sbs/PoSt/1122_906865.HtM
BbS.okapop128.sbs/PoSt/1122_884489.HtM
BbS.okapop129.sbs/PoSt/1122_698183.HtM
BbS.okapop130.sbs/PoSt/1122_120925.HtM
BbS.okapop131.sbs/PoSt/1122_536429.HtM
BbS.okapop132.sbs/PoSt/1122_419348.HtM
BbS.okapop133.sbs/PoSt/1122_783388.HtM
BbS.okapop134.sbs/PoSt/1122_807797.HtM
BbS.okapop135.sbs/PoSt/1122_599842.HtM
BbS.okapop136.sbs/PoSt/1122_231077.HtM
BbS.okapop137.sbs/PoSt/1122_240230.HtM
BbS.okapop138.sbs/PoSt/1122_438925.HtM
BbS.okapop139.sbs/PoSt/1122_227257.HtM
BbS.okapop140.sbs/PoSt/1122_806848.HtM
BbS.okapop141.sbs/PoSt/1122_723695.HtM
BbS.okapop142.sbs/PoSt/1122_914274.HtM
BbS.okapop133.sbs/PoSt/1122_587569.HtM
BbS.okapop134.sbs/PoSt/1122_946894.HtM
BbS.okapop135.sbs/PoSt/1122_114103.HtM
BbS.okapop136.sbs/PoSt/1122_160812.HtM
BbS.okapop137.sbs/PoSt/1122_845072.HtM
BbS.okapop138.sbs/PoSt/1122_646042.HtM
BbS.okapop139.sbs/PoSt/1122_352290.HtM
BbS.okapop140.sbs/PoSt/1122_685817.HtM
BbS.okapop141.sbs/PoSt/1122_692714.HtM
BbS.okapop142.sbs/PoSt/1122_108396.HtM
BbS.okapop133.sbs/PoSt/1122_879155.HtM
BbS.okapop134.sbs/PoSt/1122_675838.HtM
BbS.okapop135.sbs/PoSt/1122_785752.HtM
BbS.okapop136.sbs/PoSt/1122_387981.HtM
BbS.okapop137.sbs/PoSt/1122_654955.HtM
BbS.okapop138.sbs/PoSt/1122_965417.HtM
BbS.okapop139.sbs/PoSt/1122_691279.HtM
BbS.okapop140.sbs/PoSt/1122_082557.HtM
BbS.okapop141.sbs/PoSt/1122_421686.HtM
BbS.okapop142.sbs/PoSt/1122_834601.HtM
BbS.okapop133.sbs/PoSt/1122_884042.HtM
BbS.okapop134.sbs/PoSt/1122_683712.HtM
BbS.okapop135.sbs/PoSt/1122_605599.HtM
BbS.okapop136.sbs/PoSt/1122_929563.HtM
BbS.okapop137.sbs/PoSt/1122_498726.HtM
BbS.okapop138.sbs/PoSt/1122_511810.HtM
BbS.okapop139.sbs/PoSt/1122_682136.HtM
BbS.okapop140.sbs/PoSt/1122_247039.HtM
BbS.okapop141.sbs/PoSt/1122_237360.HtM
BbS.okapop142.sbs/PoSt/1122_052144.HtM
BbS.okapop133.sbs/PoSt/1122_004587.HtM
BbS.okapop134.sbs/PoSt/1122_409243.HtM
BbS.okapop135.sbs/PoSt/1122_232667.HtM
BbS.okapop136.sbs/PoSt/1122_776155.HtM
BbS.okapop137.sbs/PoSt/1122_163990.HtM
BbS.okapop138.sbs/PoSt/1122_586527.HtM
BbS.okapop139.sbs/PoSt/1122_202895.HtM
BbS.okapop140.sbs/PoSt/1122_444918.HtM
BbS.okapop141.sbs/PoSt/1122_918775.HtM
BbS.okapop142.sbs/PoSt/1122_670040.HtM
BbS.okapop133.sbs/PoSt/1122_856496.HtM
BbS.okapop134.sbs/PoSt/1122_651366.HtM
BbS.okapop135.sbs/PoSt/1122_236567.HtM
BbS.okapop136.sbs/PoSt/1122_794585.HtM
BbS.okapop137.sbs/PoSt/1122_947239.HtM
BbS.okapop138.sbs/PoSt/1122_529188.HtM
BbS.okapop139.sbs/PoSt/1122_199375.HtM
BbS.okapop140.sbs/PoSt/1122_269062.HtM
BbS.okapop141.sbs/PoSt/1122_822270.HtM
BbS.okapop142.sbs/PoSt/1122_107332.HtM

#牛客AI配图神器#

全部评论

相关推荐

11-03 14:57
西北大学 营销
Belltrix:其实就是每根转动一定的角度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务