二叉搜索树的第K个节点

作者: Taoyongpan | 来源:发表于2018-04-05 12:28 被阅读11次

题目描述

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

相关文章

网友评论

    本文标题:二叉搜索树的第K个节点

    本文链接:https://www.haomeiwen.com/subject/tjgrhftx.html