二叉搜索树的第k个节点

题目描述

给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为4。

可以利用二叉查找树中序遍历有序的特点。

 1 /*
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6 
 7     public TreeNode(int val) {
 8         this.val = val;
 9 
10     }
11 
12 }
13 */
14 public class Solution {
15     int count = 0;
16     int kMin = 0;
17     TreeNode tree;
18     TreeNode KthNode(TreeNode pRoot, int k)
19     {   kMin = k;
20         Order(pRoot);
21      return tree;
22     }
23     void Order(TreeNode pRoot){
24         if(pRoot==null||count>=kMin) return;
25         if(pRoot.left!=null) 
26         {
27             Order(pRoot.left);
28         }
29         {
30             count++;
31             if(count==kMin) tree=pRoot;
32         }
33         if(pRoot.right!=null) Order(pRoot.right);
34     }
35 
36 }

 

posted @ 2019-09-11 09:45  chyblogs  阅读(389)  评论(0)    收藏  举报