面试官让你找二叉树所有叶子节点,你还在一层层遍历?这道题真正考验的是"逆向思维"大家有没有发现这样一个现象?很多算法题,第一眼看起来都很简单。比如今天要聊的这道经典题——寻找二叉树的叶子节点(Find Leaves of Binary Tree)。不少人看到题目第一反应就是:“叶子节点?那还不简单,DFS遍历一遍,把左右孩子都为空的节点放进集合不就完了?”如果只是让你找一次叶子节点,确实如此。但真正的Find Leaves of Binary Tree可没有这么简单。它真正的要求是:每次删除所有叶子节点,把它们放进一个数组;删除之后新的叶子节点再次出现,再继续删除,直到整棵树为空。也就是说,最终得到的结果像这样:[ [4,5,3], [2], [1] ]是不是一下子就有意思了?今天,我们就来聊聊这道题背后的算法思想,以及为什么它真正考察的,并不是二叉树,而是**“换个角度思考问题”**。一、题目到底在说什么?先来看一个例子。假设有下面这样一棵树: