二叉搜索树的第k个结点

题目

  给定一颗二叉搜索树,请找出其中的第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     }

 

posted on 2017-06-15 16:18  一个不会coding的girl  阅读(105)  评论(0编辑  收藏  举报

导航