1. 程式人生 > 其它 >7-5 正整數A+B (15分)

7-5 正整數A+B (15分)

技術標籤:java演算法

題目 劍指 Offer 54. 二叉搜尋樹的第k大節點

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

示例 1:

輸入: root = [3,1,4,null,2], k = 1
3
/
1 4

2
輸出: 4
示例 2:

輸入: root = [5,3,6,2,4,null,null,1], k = 3
5
/
3 6
/
2 4
/
1
輸出: 4

思路

中序逆序遍歷

複雜度分析

時間:O(n)
空間: O(n)

程式碼

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution { int index = 1, res = 0; public int kthLargest(TreeNode root, int k) { if(root == null) { return -1; } order(root, k); return res; } void order(TreeNode root, int k) { if(root != null) { order(root.right,
k); if(index == k) { //中序逆序遍歷,找到第k大的數 res = root.val; index++; return; } index++; order(root.left, k); } } }

結果

在這裡插入圖片描述