上一道题,求完全二叉树的节点数,刚好复习了,遍历二叉树,所以这道题都有思路了,就是最后一步忘记了去重,自己写的代码如下,功能是实现了,但是比较费事儿,所以看看题解的更好的方法,
方法一
完全遍历二叉树, 数组储存,然后排序去重,找第k大值
方法二
搜索二叉树,中序遍历刚好是从小到大,所以反中旬遍历,然后求------ 继续看题会发现是二叉搜索树,发现中序遍历的数组结果刚好是排好序的,这样就可以想到反中序遍历,遍历结束后直接获取数组第 K-1 位的数值就是结果了(当然上面说的都可以不用倒序,直接用中序遍历获取 array.lenth-k 大的值也是所需结果)
方法三
3、在第二种解法上利用反中序遍历,最容易想到的优化就是直接遍历到第 k 大的值就停止遍历,直接返回需要的值,即第三种解法。---------不完全遍历