在之前的系列中。我们学习了DFS、BFS,也熟悉了平衡二叉树,满二叉树,完全二叉树,BST(二叉搜索树)等概念。在本节中,我们将学习一种二叉树中常用的操作 —剪枝。这里额外说一点,就本人而言,对这个操作以及其衍化形式的使用会比较频繁。因为我是做规则引擎的,在规则引擎中,我们会有一个概念叫做决策树,那如果一颗决策树完全生长,就会带来比较大的过拟合问题。因为完全生长的决策树,每个节点只会包含一个样本。所以我们就需要对决策树进行剪枝操作,来提升整个决策模型的泛化能力(ML概念)… 听不懂也没关系,简单点讲,就是我觉得这个很重要,或者每道算法题都很重要。如果你在工作中没有用到,不是说明算法不重要,而可能是你还不够重要。
01、剪枝概述
假设有一棵树,最上层的是root节点,而父节点会依赖子节点。如果现在有一些节点已经标记为无效,我们要删除这些无效节点。如果无效节点的依赖的节点还有效,那么不应该删除,如果无效节点和它的子节点都无效,则可以删除。剪掉这些节点的过程,称为剪枝,目的是用来处理二叉树模型中的依赖问题。
我们还是通过一道题目来进行具体学习。
02、题目分析
第814题:二叉树的剪枝 |
---|