擅长:python、mysql、java
<p>广度优先,无递归,也适用于其他序列类型:</p>
<pre><code>from collections import Sequence
from itertools import chain, count
def depth(seq):
for level in count():
if not seq:
return level
seq = list(chain.from_iterable(s for s in seq if isinstance(s, Sequence)))
</code></pre>
<p>同样的想法,但占用的内存要少得多:</p>
<pre><code>from collections import Sequence
from itertools import chain, count
def depth(seq):
seq = iter(seq)
try:
for level in count():
seq = chain([next(seq)], seq)
seq = chain.from_iterable(s for s in seq if isinstance(s, Sequence))
except StopIteration:
return level
</code></pre>