🌗 剑指 Offer 54. 二叉搜索树的第k大节点

吞佛童子2022年10月10日
  • algorithm
  • Tree
小于 1 分钟

🌗 剑指 Offer 54. 二叉搜索树的第k大节点

难度: 🌗

问题描述

img_24.png


解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int top = 0;
    int res;
    public int kthLargest(TreeNode root, int k) {
        // 思路:
        // 中序遍历 - 升序
        // 变形中序遍历 - 数组降序
        mySol(root, k);
        return res;
    }

    private void mySol(TreeNode root, int k) {
        // 递归终止条件
        if(root == null) {
            return;
        }
        mySol(root.right, k);
        top ++;
        if(top == k) {
            res = root.val;
            return;
        }
        mySol(root.left, k);
    }
}

输出

img_23.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou