二叉搜索树的第k个结点

来源:互联网 发布:龙卷风收音机mac 编辑:程序博客网 时间:2024/06/05 22:47

题目:

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

分析:
中序遍历二叉树。

class Solution{public:    TreeNode* KthNode( TreeNode* pRoot, int k )    {        if ( pRoot == NULL || k == 0 )            return NULL;        return KthNodeCore( pRoot, k );    }    TreeNode* KthNodeCore( TreeNode* pRoot, int& k )    {        TreeNode* target = NULL;        if ( pRoot->left != NULL )            target = KthNodeCore( pRoot->left, k );        if ( target == NULL )        {            if ( k == 1 )                target = pRoot;            k--;        }        if ( target == NULL && pRoot->right != NULL )            target = KthNodeCore( pRoot->right, k);        return target;    }};
原创粉丝点击