广度优先遍历_LeetCode | 广度优先遍历
生活随笔
收集整理的這篇文章主要介紹了
广度优先遍历_LeetCode | 广度优先遍历
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
閱讀本文大約需要 4 分鐘
概述
前言
429 N 叉樹的層次遍歷 90.36%
102 二叉樹的層次遍歷 99.76%
后記
前言
不管經(jīng)濟多不好,提高自身硬實力才是關鍵。本文由一個騷包程序猿zone7撰寫,歡迎關注。
429 N 叉樹的層次遍歷 90.36%
給定一個 N 叉樹,返回其節(jié)點值的層序遍歷。 (即從左到右,逐層遍歷)。
例如,給定一個?3叉樹?:
返回其層序遍歷:
[?????[1],
?????[3,2,4],
?????[5,6]
]
說明:
樹的深度不會超過?1000。
樹的節(jié)點總數(shù)不會超過?5000。
思路
如果你有讀我前面的文章就知道,其實這個就是二叉樹層次遍歷的一個變形。
for?child?in?current.children:????????????????????????que.append(child);
用這句代碼替換了左右子樹加入隊列。
解答
#?運行效率:90.36%"""
#?Definition?for?a?Node.
class?Node(object):
????def?__init__(self,?val,?children):
????????self.val?=?val
????????self.children?=?children
"""
class?Solution(object):
????def?levelOrder(self,?root):
????????"""
????????:type?root:?Node
????????:rtype:?List[List[int]]
????????"""
????????if?not?root:
????????????return?[];
????????que?=?[];????
????????res?=?[];????
????????que.append(root);????
????????while?len(que):?????
????????????l?=?len(que);
????????????sub?=?[];????????
????????????for?i?in?range(l):
????????????????current?=?que.pop(0);????
????????????????sub.append(current.val);
????????????????for?child?in?current.children:????
????????????????????que.append(child);
????????????res.append(sub);????
????????return?res;
102 二叉樹的層次遍歷 99.76%
給定一個二叉樹,返回其按層次遍歷的節(jié)點值。 (即逐層地,從左到右訪問所有節(jié)點)。
例如:
給定二叉樹: [3,9,20,null,null,15,7],
???/?\
??9??20
????/??\
???15???7
返回其層次遍歷結(jié)果:
[??[3],
??[9,20],
??[15,7]
]
思路
嗯,這就是上篇文章《python 實現(xiàn)二叉樹的深度&&廣度優(yōu)先的遍歷》中的層次遍歷代碼。不用解釋太多了。
解答
#?運行效率:99.76%#?Definition?for?a?binary?tree?node.
#?class?TreeNode(object):
#?????def?__init__(self,?x):
#?????????self.val?=?x
#?????????self.left?=?None
#?????????self.right?=?None
class?Solution(object):
????def?levelOrder(self,?root):
????????if?not?root:
????????????return?[]
????????ret?=?[]
????????ret.append(root)
????????ret2?=?[]
????????while?len(ret)?!=?0:
????????????temp?=?[]
????????????length?=?len(ret)
????????????for?index?in?range(length):
????????????????tempValue?=?ret.pop(0)
????????????????temp.append(tempValue.val)
????????????????if?tempValue.left?is?not?None:
????????????????????ret.append(tempValue.left)
????????????????if?tempValue.right?is?not?None:
????????????????????ret.append(tempValue.right)
????????????ret2.append(temp)
????????return?ret2
后記
今天的題就到這里了,如果你有什么好刷題的建議可以留言或者后臺私信給我,我會分享給大家。
往期推薦:
python 實現(xiàn)二叉樹的深度 & 廣度優(yōu)先遍歷
歡迎關注這個騷包程序猿?
總結(jié)
以上是生活随笔為你收集整理的广度优先遍历_LeetCode | 广度优先遍历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 977. 有序数组的平
- 下一篇: numpy 随机数_TF+Numpy减少