private TreeNode ret; private int cnt = 0; public TreeNode KthNode(TreeNode pRoot, int k) { inOrder(pRoot, k); return ret; } private void inOrder(TreeNode root, int k) { if (root == null || cnt >= k) return; inOrder(root.left, k); cnt++; if (cnt == k) ret = root; inOrder(root.right, k); }
思路:二叉搜索樹按照中序遍歷的順序打印出來正好就是排序好的順序。
java
// 因此,按照中序遍歷順序找到第k個結點就是結果。
code