递归处理,先从右边开始 然后就是根节点,最后才是左边节点,每层嵌套都是先右再根,再左,这样输入了都是按大往小顺序排列。
代码实现
const kthLargest = (root, k) => {
// 遍历顺序(访问右节点在前):右-根-左
const res = [];
const unInOrder = node => {
if (!node) return;
unInOrder(node.right);
res.push(node.val);
unInOrder(node.left);
};
unInOrder(root);
// 得到从大到小排序的数组
return res[k - 1];
};
流程图分析