剑指Offer之二叉树的镜像
题目描述:
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
|
|
操作给定的二叉树,将其变换为源二叉树的镜像。
|
|
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
决策树算法在机器学习中算是很经典的一个算法系列了。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林,更重要的是CART树是学习GBDT,XGBoost的基础。因此,本文作为复习笔记,记录决策树的理论知识。
要想知道什么是机器学习,我们就需要首先理解机器是什么,机器就是电脑、芯片、代码这些东西。让电脑遵循人的指令,完成一件特定的任务从计算机发明那天开始就在研究了,现在的各种编程语言、数据结构和编程算法等都是在做这个。但是它们只能依赖于程序员输入的确定的代码才能 work,也就是说他们不能“自己学习”,这样对于有些问题就很尴尬,比如检测一张图片中有几个人,识别一句话中提到了几个人名,识别一张图片是不是黄图等等。这些任务要是写一个代码,依靠规则去实现,那还是非常困难。但是我们可以换个思路,让我们写代码去实现这些功能很困难,但是让我们去给图片打标签(比如给一批图,人为的打上是不是黄图的标签…)不是很简单的嘛,我们如果能让机器自己从打好标签的图片中自己学习那些是黄图不就万事大吉了嘛。这样看的话,标注的工作就对应了传统写代码中写规则匹配的工作。
在机器学习领域,一个基本的定理就是“没有免费的午餐”。换言之,就是没有算法能完美地解决所有问题,尤其是对监督学习而言(例如预测建模)。
举例来说,你不能去说神经网络任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。
其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。
当然,所选的算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。作为类比,如果你需要打扫房子,你可能会用到吸尘器、扫帚或是拖把,但你绝对不该掏出铲子来挖地。
如果说最优的通用机器学习算法,那可能就是随机算法了,只要数据符合自然规律,那么随机算法的准确率在50%。