BSTでleetcode230 K番目の最小の要素

1  「」」
2は、 二分探索木を考えると、それにk番目の最小の要素を検索する機能kthSmallestを書く。
 3  注意:
 4  。あなたは、kは常に有効である1≤K≤BSTの総要素を仮定することができる
 5  :実施例1の
 6  の入力を:ルート= [3,1,4、ヌル、2]、K = 1
 7     3
 8    / \
 9  1 4
 10    \
 11     2
 12  出力:1
 13  例2:
 14  入力:ルート= [5,3,6、 2,4、NULL、NULL、1]、K = 3
 15         5
 16        / \
 17       3 6
 18      / \
19     2 4
 20    /
 21である 。1
 22で 出力:. 3
 23である "" " 
24  " "" 
25  使用するスタックプレオーダー、プラス決意文
 26は IF LEN(RES)== K
 27  "" " 
28  #のバイナリツリーAの定義。ノード
29  クラスツリーノード:
30       DEF __init __(自己、X)は:
31である 。#         self.val X = 
32           self.left = NONE 
33がない          self.rightなし= 
34ではない 
35  クラスソリューション:
 36      DEFkthSmallest(セルフ、根、K):
 37 [          スタック= []
 38は          RES = []
 39          CUR = ルート
 40は         ながらスタックまたはCUR:
 41である             IF CUR:
 42がある                 stack.append(CUR)
 43が                  CURが= cur.left
 44である             45                  = CUR stack.pop()
 46である                 res.append(Cur.Val)
 47                  IF LEN(RES)== K:  トラバーサル順序は、文の中間決定
48                      戻り RESを[-1 ]
49                  CUR = cur.right

 

おすすめ

転載: www.cnblogs.com/yawenw/p/12405344.html