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); } }