1.d=deque([None])
d=deque([None])
while(d):
print(d)
执行结果:
没想到吧!系统其实給入了一个[None],并且while判定了d为非空,因此这里我们看到了无限循环的输出;
2.d=deque([])
d=deque([])
while(d):
print(d)
这里while判定了d为空,因此没有任何输出。
结论:
可见,我们在判定条件的正确与否,知道了None != 空
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if(root is None): return []
#没有这行语句,就会对None的情况判断失误,因为while循环会认为deque([None])正确,并且步入循环,造成程序致命的错误
q=deque([root])
ans=[]
while(q):
n=len(q)
queue=[]
for i in range(n):
_=q.popleft()
queue.append(_.val)
if(_.left): q.append(_.left)
if(_.right): q.append(_.right)
ans.append(queue)
return ans
先前提到的是队列中是否含元素!
3.现在来个常规的
root=None
if(root):
print(root)
if([]):
print([])
结果是都没有输出,所以,对于队列中的元素存在与否,我们的判断需要谨慎呀!