日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer 面试32题

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer 面试32题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面試32題:

題目:從上到下打印二叉樹

題:不分行從上到下打印二叉樹

解題代碼:

# -*- 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 hereif not root:return []res=[]res_val=[]res.append(root)while len(res)>0:node=res.pop(0)res_val.append(node.val)if node.left:res.append(node.left)if node.right:res.append(node.right)return res_val

?

題目拓展一:分行從上到下打印二叉樹。

題:從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

解題代碼一:同劍指offer

# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:# 返回二維列表[[1,2],[4,5]]def Print(self, pRoot):# write code hereif not pRoot:return []res=[]res_val=[]res.append(pRoot)nextLevel=0 #表示下一層節點的數目toBePrinted=1 #表示當前層還沒有打印的節點數temp=[]while len(res)>0:node=res[0]temp.append(node.val)if node.left:res.append(node.left)nextLevel+=1if node.right:res.append(node.right)nextLevel+=1del res[0]toBePrinted-=1if toBePrinted==0:res_val.append(temp)toBePrinted=nextLevelnextLevel=0temp=[]return res_val

解題代碼二:代碼更簡潔。

# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:# 返回二維列表[[1,2],[4,5]]def Print(self, pRoot):# write code hereif not pRoot:return []res,nodes=[],[pRoot]while nodes:curStack,nextStack=[],[]for node in nodes:curStack.append(node.val)if node.left:nextStack.append(node.left)if node.right:nextStack.append(node.right)res.append(curStack)nodes=nextStackreturn res

?解題代碼三:cur、last記錄,思路同二

# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:# 返回二維列表[[1,2],[4,5]]def Print(self, pRoot):# write code hereif not pRoot:return []res=[]arr=[]arr.append(pRoot)cur=0#last=1while cur<len(arr):last=len(arr)temp=[]while (cur<last):temp.append(arr[cur].val)if arr[cur].left:arr.append(arr[cur].left)if arr[cur].right:arr.append(arr[cur].right)cur+=1res.append(temp)return res

?

?

題目拓展二:之字形打印二叉樹

題:請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。

解題代碼一:簡潔。

# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:def Print(self, pRoot):# write code hereif not pRoot:return []res=[]nodes=[pRoot]leftToRight=Truewhile nodes:curStack,nextStack=[],[]for node in nodes:curStack.append(node.val)if node.left:nextStack.append(node.left)if node.right:nextStack.append(node.right)if not leftToRight:curStack.reverse()res.append(curStack)leftToRight = not leftToRightnodes=nextStack

解題代碼二:同劍指offer。

# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:def Print(self, pRoot):# write code hereif not pRoot:return []res=[]nodes=[pRoot]right=Truewhile nodes:curStack,nextStack=[],[]if right:for node in nodes:curStack.append(node.val)if node.left:nextStack.append(node.left)if node.right:nextStack.append(node.right)else:for node in nodes:curStack.append(node.val)if node.right:nextStack.append(node.right)if node.left:nextStack.append(node.left)res.append(curStack)nextStack.reverse()right=not rightnodes=nextStackreturn res

?

轉載于:https://www.cnblogs.com/yanmk/p/9217654.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的剑指offer 面试32题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。