※剑指offer系列51:二叉搜索树的第k个结点

根据二叉搜索树的特点,它中序遍历的顺序就是从小到大的顺序。因此只要中序遍历找到第k个就可以。

 1 class Solution {
 2 public:
 3     TreeNode* KthNode(TreeNode* pRoot, int k)
 4     {
 5         if (pRoot == NULL||k==0)
 6             return NULL;
 7         return findKthNode(pRoot,k);
 8         
 9     }
10     TreeNode* findKthNode(TreeNode* pRoot, int &k)
11     {
12         TreeNode* target = NULL;
13         if (pRoot->left)//一直找到最左的结点
14             target=findKthNode(pRoot->left,k);
15         if (target == NULL)
16         {
17             if (k == 1)
18                 target = pRoot;
19             k--;
20         }
21 
22         if (target==NULL&&pRoot->right)//在左边没找到,就去右子树
23             target=findKthNode(pRoot->right, k);
24         return target;
25     }
26 
27 
28 };

 

转载于:https://www.cnblogs.com/neverland0718/p/11266073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值