[LC] 103バイナリツリージグザグ上位のオーダートラバーサル

バイナリツリーを考えると、返す  ジグザグレベルのための  そのノードの値のトラバーサルを。(すなわち、左から右へ、その後間の次のレベル、代替のために左から右に)。

たとえば、次のように
考えると、バイナリツリー  [3,9,20,null,null,15,7]

    3 
   / \ 
  9 20 
    / \ 
   15 7

 

ジグザグレベル順トラバーサルを返します。

[ 
  [3]、
  [20,9]、
  [15,7] 
]

#のバイナリツリーノードの定義。
#のクラスのTreeNode(オブジェクト):      デフ__init __(自己、X):          self.val = X          self.left =なし
#1          self.right =なし

クラスソリューション(オブジェクト):
     デフzigzagLevelOrder(自己、根):
         "" " 
        :タイプのルート:ツリーノード
        :RTYPE:リスト[一覧[INT]] 
        """ 
        からコレクションをインポート両端キュー
        のres = []
         場合はルートがあるなし:
             戻る解像度
        is_even= Falseの
        my_deque = 両端キュー()
        my_deque.append(ルート)
        一方my_deque:
            サイズ = LEN(my_deque)
            LST = []
             のための _ 範囲(サイズ):
                 場合is_even:
                    CUR = my_deque.pop()
                     場合cur.right:
                        my_deque .appendleft(cur.right)
                    の場合cur.left:
                        my_deque.appendleft(cur.left)
                
                    CUR =my_deque.popleft()
                     の場合cur.left:
                        my_deque.append(cur.left)
                    の場合cur.right:
                        my_deque.append(cur.right)
                lst.append(cur.val)
            res.append(LST)
            is_even = ではないis_even
         リターン RES

 

おすすめ

転載: www.cnblogs.com/xuanlu/p/11718930.html