劍指offer21 22棧與樹

2021-09-25 09:48:00 字數 1224 閱讀 6932

21輸入兩個整數序列,第乙個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。(注意:這兩個序列的長度是相等的)

# -*- coding:utf-8 -*-

class solution:

def ispoporder(self, pushv, popv):

# stack中存入pushv中取出的資料

stack=

while popv:

# 如果第乙個元素相等,直接都彈出,根本不用壓入stack

if pushv and popv[0]==pushv[0]:

popv.pop(0)

pushv.pop(0)

#如果stack的最後乙個元素與popv中第乙個元素相等,將兩個元素都彈出

elif stack and stack[-1]==popv[0]:

stack.pop()

popv.pop(0)

# 如果pushv中有資料,壓入stack

elif pushv:

# 上面情況都不滿足,直接返回false。

else:

return false

return true

22從上往下列印出二叉樹的每個節點,同層節點從左至右列印。

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution:

# 返回從上到下每個節點值列表,例:[1,2,3]

def printfromtoptobottom(self, root):

# write code here

l=if not root:

return

q=[root]

while len(q):

t=q.pop(0)

if t.left:

if t.right:

return l

劍指offer 棧相關

回歸一下基本概念 python 實現棧 例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路 借用乙個輔助的棧,遍歷壓棧順序,先將第乙個放入棧中,這裡是1,然後判斷棧...

劍指Offer(一) 棧

目錄 1 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。2 棧的壓入 彈出序列 思路 3 包含min函式的棧 思路 c 解答 python解答 4 二叉搜尋樹的後序遍歷序列 5 按之字形順序列印二叉樹 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。cod...

(四)劍指offer 棧與佇列篇

2.用兩個棧實現佇列 3.包含min函式的棧 4.棧的壓入 彈出序列 題目給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 答案思路 用佇列來存放滑動視窗裡邊的元素的下標,對...