二叉搜尋樹第k個節點(中序遍歷保留每層count)

2021-08-19 16:11:18 字數 491 閱讀 9227

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

1.最容易想到的情況,中序遍歷儲存在vector裡,複雜度為o(n)
/*

struct treenode

};*/

class solution

void mid(treenode* proot,vector&result)

};

注意邊界條件!   k<=0或者超過n,給定根節點為空的情況。

2.

/*

struct treenode

};*/

class solution

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

};

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

實際上是中序遍歷,每次遍歷到乙個節點,k 直到k 0,就找到了第k個數。遞迴中序遍歷函式模板 void inorder tree pointer ptr 遞迴演算法總結 class solution void dfs treenode root,int k cout root endl dfs ro...

二叉搜尋樹的第k個節點

題目描述 給定一顆二叉搜尋樹,請找出其中的第k大的節點。只需中序遍歷一顆二叉搜尋樹,就很容易找出它的第k大節點 非遞迴方法 class solution treenode pnode s.top s.pop if cnt k return pnode p pnode right return nul...

樹 二叉搜尋樹的第K個節點

給定一棵二叉搜尋樹,請找出其中的第k小的結點。例如,5,3,7,2,4,6,8 中,按結點數值大小順序第三小結點的值為4。分析 二叉搜尋樹就是每個節點x,大於其左子樹的值,小於其右子樹的值,其中序排序是遞增的。使用中序遍歷,每遍歷乙個節點,k 1,直到k減到1,即為第k小的節點 function t...