public int FindKthLargestValueInBst_ViaReverseInOrder(BST tree, int k)
        {
            TreeInfo treeInfo = new TreeInfo(0, -1);

            reverseInOrder(tree, k, treeInfo);

            return(treeInfo.NodeLatestValue);
        }
        private void reverseInOrder(BST tree, int k, TreeInfo treeInfo)
        {
            if (tree == null || treeInfo.NumberOfNodesVisited >= k)
            {
                return;
            }

            reverseInOrder(tree.right, k, treeInfo);
            if (treeInfo.NumberOfNodesVisited < k)
            {
                treeInfo.NumberOfNodesVisited += 1;
                treeInfo.NodeLatestValue       = tree.value;
                reverseInOrder(tree.left, k, treeInfo);
            }
        }