二叉搜索树的第K个节点

题目描述

给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。
思路
二叉搜索树的中序遍历是按照大小顺序进行排列的,我们再中序遍历顺序中返回第K个值即可;

public class Solution {
    
    int index = 0;
    TreeNode KthNode(TreeNode pRoot, int k)
    {
        if(pRoot ==null||k<=0)
            return null;
        if(pRoot!=null)
        {
            TreeNode node = KthNode(pRoot.left,k);
            if(node != null)
                return node;
            index++;
            if(index==k)
                return pRoot;
            node = KthNode(pRoot.right,k);
            if(node != null)
                return node;
        } 
        return null;
    }
}
    原文作者:Taoyongpan
    原文地址: https://www.jianshu.com/p/d38d05201545
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞