题目
给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / 3 7 / / 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
分析
按照中序遍历方式,取出第k-1位置上的结点即可
代码
1 ArrayList<TreeNode> list = new ArrayList<TreeNode>(); 2 3 TreeNode KthNode(TreeNode pRoot, int k) 4 { 5 if(pRoot==null || k<=0) 6 return null; 7 inorder(pRoot); 8 int size = list.size(); 9 if(k>size) 10 return null; 11 else 12 return list.get(k-1); 13 } 14 15 void inorder(TreeNode pRoot){ 16 if(pRoot==null) 17 return; 18 inorder(pRoot.left); 19 list.add(pRoot); 20 inorder(pRoot.right); 21 }