题目描述
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
解答
中序遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int K,i=0; TreeNode node = null;
TreeNode KthNode(TreeNode pRoot, int k) { if (k==0){ return null; } K = k; dfs(pRoot);
return node; }
private void dfs(TreeNode pRoot) { if (pRoot == null) { return; } dfs(pRoot.left); if (node != null) { return; } if (i < K) { i++; } if (i == K) { node = pRoot; return; } dfs(pRoot.right); }
|