オファーの表面安全な質問を証明する。二分探索木のK番目のノード

タイトル説明

二分探索木を考えると、その中の最初のk小さいノードを検索してください。例えば、(5,3,7,2,4,6,8)と、第3の接続点に係る数値は、4要約です。
 
 
ソリューション:

順トラバーサルでバイナリ検索ツリーが上昇しているので、カウンタは、順序ベースに添加することができるようになります。

1  クラスソリューション{
 2  公共3      ツリーノード* KthNode(ツリーノード* PROOT、INT K)
 4      {
 5          INT I = INT32_MIN。
6          戻りFUNC(PROOT、K、I)。
7      }
 8      ツリーノード* FUNC(ツリーノード*ノード、INT K、INTI){
 9          なら(ノード== nullptr){
 10              であれば(I == INT32_MIN){
 11                  iは= 0 ;
12              }
 13              リターンnullptr;
14          }
 15          decltype(ノード)T。
16          であれば(T = FUNC(ノード- > 左、K、I)){
 17              リターンT。
18          }
 19          ++ I。
20          もし(I == K){
 21              リターンノード。
22          }
 23          であれば(T = FUNC(ノード- > 右、K、I)){
 24              リターンT。
25          }
 26          リターンnullptr。
27      }
 28 }。

 

おすすめ

転載: www.cnblogs.com/FdWzy/p/12306142.html