1. 程式人生 > >二叉查詢樹的第 K 個結點

二叉查詢樹的第 K 個結點

private TreeNode ret;
private int cnt = 0;

public TreeNode KthNode(TreeNode pRoot, int k) {
    inOrder(pRoot, k);
    return ret;
}

private void inOrder(TreeNode root, int k) {
    if (root == null || cnt >= k)
        return;
    inOrder(root.left, k);
    cnt++;
    if (cnt == k)
        ret = root;
    inOrder(root.right, k);
}

思路:二叉搜尋樹按照中序遍歷的順序打印出來正好就是排序好的順序。

//     所以,按照中序遍歷順序找到第k個結點