劍指62 二叉搜尋樹的第k個結點

2022-06-08 02:30:10 字數 653 閱讀 2882

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

如果中序遍歷一棵二叉搜尋樹,則遍歷序列的數值是遞增排序的。因此,只需要在中序遍歷節點的過程中,判斷當前遍歷的節點是否為第k個節點就行了

/*

public class treenode }*/

public

class

solution

//找第k小的節點

private

void getkthnode(treenode node, int

k) index++;

if (node.right != null

) getkthnode(node.right,k);}}

//舉一反三:找第k大的節點

//思路:只需要更改中序遍歷的遍歷方式,改為 右→根→左。 這樣遍歷的序列就是遞減排序的

/*private void getkthnode(treenode node, int k)

index++;

if (node.left != null)

getkthnode(node.left,k);}}

*/}

62 劍指offer 二叉搜尋樹的第k個結點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。非遞迴中序遍歷 nice treenode kthnode treenode root,int k else while node null stack.isempty retu...

62 劍指offer 二叉搜尋樹的第k個結點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。解題思路 使用中序遍歷進行遍歷,得到的就是按照順序的,當遍歷到第k個就輸出即可。1 2 struct treenode 9 10 11class solution 21...

劍指Offer62 二叉搜尋樹的第k個結點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。思路 coding utf 8 class treenode def init self,x self.val x self.left none self.right none ...