#leetcode#Kth Smallest Element in a BST,

來源:互聯網
上載者:User

#leetcode#Kth Smallest Element in a BST,

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

Note: 
You may assume k is always valid, 1 ≤ k ≤ BST's total elements.

Follow up:
What if the BST is modified (insert/delete operations) often and you need to find the kth smallest frequently? How would you optimize the kthSmallest routine?


思路, in order traversal,

注意第一個元素的判斷, 設root為當前節點, 則 root.left == null && count == 0,就保證了root為 1st smallest element,例子:


   4

  /

/

     2

  /

/

     1



    4

  /

/

       2

         \

           \

    3


上面兩個bst中第一個節點分別為 1 和 2


/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int kthSmallest(TreeNode root, int k) {        List<Integer> count = new ArrayList<Integer>();        count.add(0);        helper(root, count, k);        return count.get(1);    }        private void helper(TreeNode root, List<Integer> count, int target){        if(root == null){            return;        }                helper(root.left, count, target);                if(root.left == null && count.get(0) == 0){            count.set(0, 1);        }else{            count.set(0, count.get(0) + 1);        }        if(count.get(0) == target){            count.add(root.val);            return;        }                helper(root.right, count, target);    }}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.