バイナリツリーを考えると、返す ジグザグレベルのための そのノードの値のトラバーサルを。(すなわち、左から右へ、その後間の次のレベル、代替のために左から右に)。
たとえば、次のように
考えると、バイナリツリー [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