《劍指Offer》51 二叉搜尋樹的第k個結點

2021-09-11 07:21:45 字數 884 閱讀 5272

題目:51. 二叉搜尋樹的第k個結點

知識點:二叉搜尋樹

題目描述:

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如, (5,3,7,2,4,6,8)    中,按結點數值大小順序第三小結點的值為4。

解題思路:

解法一和解法二的思路是一樣的,即利用二叉搜尋樹中序遍歷的結果為公升序數列,只需通過中序遍歷,同時對結點進行計數就可以了。

**:

//解法一(自研):

treenode* kthnode(treenode* proot, int k)

treenode* findkthnode(treenode* proot, int& k)

if(--k == 0)

return proot;

if(proot->right != nullptr)

return nullptr;

}//解法二(劍指offer):

const binarytreenode* kthnode(const binarytreenode* proot, unsigned int k)

const binarytreenode* kthnodecore(const binarytreenode* proot, unsigned int& k)

if(target == nullptr && proot->m_pright != nullptr)

target = kthnodecore(proot->m_pright, k);

return target;

}

劍指offer 二叉樹 二叉樹搜尋樹

package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...

劍指offer 5 1 替換空格

請實現乙個函式,把字串 s 中的每個空格替換成 20 示例 借助stringbuilder實現 class solution else newstr.s.charat i return newstr.tostring 最直觀的做法是從頭到尾掃瞄,遇到空格字元進行替換,同時引出來問題 由於1個字元替換...

劍指Offer 二叉搜尋樹的後序遍歷

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...