1 第一种方法是:因为我们是按列返回的,所以就以列为key,每一列的值存在hashtable中,可以使用BFS搜索
2 因为这里column是key,每个column的所有值连起来形成list,所以要用到collections.defaultdict(list)函数
3 因为是BFS,所以要用到queue,里面含有node和其对应的index;一般BFS都需要用到queue来存储每一层的node
4 对于每一个node,我们给它一个编号i,比如root我们给编号0,然后每一个node的左子节点编号是i-1,右子节点编号是i+1
5 还需要对最后的list进行sort,因为我们需要从左到右返回
6 有时候并不需要设置一个返回的变量,比如ret,res,我们只需要在最后的时候用[]来存储返回的list
7 queue需要用中括号弄起来
8 queue += (node.left, i-1), (node.right, i+1)这里把左节点和右节点添加到queue中,在for 循环中,下一次就只遍历添加的这两个了
9 上图中写错了,如果这么写,就代表没有q,那也就没有q.left和q.right
10 这里直接判断了if q,也就处理了q=root这个case
11 也不用判断if q.left和if q.right, 因为在之前的循环体里已经有判断了