70 二叉搜尋樹的第k個結點 中序遍歷

2022-06-26 19:51:10 字數 1014 閱讀 6562

實際上是中序遍歷,每次遍歷到乙個節點,k--。直到k==0,就找到了第k個數。

遞迴中序遍歷函式模板

void

inorder(tree_pointer ptr)

}

遞迴演算法總結

class

solution

void dfs(treenode* root, int &k)

cout

<

root=

"endl;

dfs(root->left, k);

cout

<

"<<

endl;

k--;

cout

<

執行k--後,k值=

""<

if(!k)

if(k > 0

) }

};

測試結果

輸出主函式 root=2

遞迴root=2

遞迴root=1

遞迴滿足if(!root)

k=3

執行k--後,k值=2

滿足if(k>0)

遞迴滿足if(!root)

k=2

執行k--後,k值=1

滿足if(k>0)

遞迴root=3

遞迴滿足if(!root)

k=1

執行k--後,k值=0

滿足if(!k)

3

AcWing 70 二叉搜尋樹的第k個結點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。你可以假設樹和k都存在,並且1 k 樹的總結點數。樣例輸入 root 2,1,3,null,null,null,null k 3 2 1 3 輸出 3用迭代法進行二叉樹的中序遍歷,遍歷到每個非空節點時都將計數加1,當計數值等於k時,返回當前節點的值。de...

二叉搜尋樹第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大的節點實質為找出中序...