算法 |《劍指offer》面試題54.二叉樹的第k大節點

給定一棵二叉搜索樹,請找出其中第k大的節點。

示例 1:

在這裏插入圖片描述

示例 2:

限制:

1 ≤ k ≤ 二叉搜索樹元素個數

題解:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
   // private int ans = 0, count = 0;
    public int kthLargest(TreeNode root, int k) {
        List<Integer> res = new ArrayList<>();
        helper(root, res);
        return res.get(res.size() - k);
    }

    private void helper(TreeNode root, List<Integer> res) {
        if(root == null) return;
        if(root.left != null) helper(root.left, res);
        res.add(root.val);
        if(root.right != null) helper(root.right, res);
    }
    
    //public int kthLargest(TreeNode root, int k) {
    //	helper(root ,k);
    //	return ans;
//}
	//private void helper(TreeNode root, int k) {
	//	if(root == null) return;
	//	helper(root.right, k);
	//	if(++count == k) {
    //      ans = root.val;
    //    }
	//	helper(root.left, k);
//}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章