二叉搜尋樹第K小 大 的結點 C 實現

2021-09-20 15:21:50 字數 815 閱讀 6017

二叉搜尋樹中序遍歷遞增,要得到第k小的數明顯進行中序遍歷即可,而第k大的數類似,可以通過中序遍歷的逆序來得到。

//	呼叫node* res = getkthminnodeofbst(root,k);

node* getkthminnodeofbst(node* root,int k)

node *left = getkthminnodeofbst(root->lchild, k);

if (left)

if (curnum == k)

curnum++;

node* right = getkthminnodeofbst(root->rchild, k);

if (right)

}呼叫int curnum = 1;

node* res = getkthmaxnodeofbst(root,curnum,k);

//沒有通過靜態變數,通過引數來記錄當前位置

node* getkthmaxnodeofbst(node* root, int& curnum, int k)

node* right = getkthmaxnodeofbst(root->rchild, curnum, k);

if (right)

if (curnum == k)

curnum++;

node* left = getkthmaxnodeofbst(root->lchild, curnum, k);

if (left)

else

}

二叉搜尋樹第k個結點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。這個題目考慮到可以用中序遍歷求解,因為中序遍歷是搜尋二叉樹的從大到小的順序,對二叉樹進行中序遍歷,每次經過結點k值減一,一直到k值等於1,對應的結點就是要尋找的點,這個...

二叉搜尋樹的第k個結點

二叉搜尋樹的第k個結點 題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。思路 二叉搜尋樹為關鍵字排序 左子樹 根 右子樹 二叉樹的中序遍歷的訪問順序為 左子樹 根 右子樹 故找出二叉搜尋樹中第k大的節點實質為找出中序...

二叉搜尋樹的第k個結點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。時間限制 1秒 空間限制 32768k 熱度指數 146968 中序遍歷二叉搜尋樹得到的則為乙個有序的陣列。因此,通過中序遍歷二叉搜尋樹則可得到結果 struct treenod...