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