102 Binary Tree Level Order Traversal

原题链接:Binary Tree Level Order Traversal
这道题有一定的难度,解法如下:

class Solution:
    # @param {TreeNode} root
    # @return {integer[][]}
    def levelOrder(self, root):
        solution = []
        if root is None:
            return solution
        thisLevel = [root]
        while len(thisLevel) > 0:  # 注意这里判断thisLevel非空的方式,我们会在本文末尾讨论一下
            tempNumbers = []
            nextLevel = []
            for temp in thisLevel:
                tempNumbers.append(temp.val)
                if temp.left is not None:
                    nextLevel.append(temp.left)
                if temp.right is not None:
                    nextLevel.append(temp.right)
            solution.append(tempNumbers)
            thisLevel = nextLevel
        return solution

关于判断thisLevel非空的方法讨论:

一开始我提交的时候并不是用这种方式来判断其非空,而是采用了while thisLevel is not [],事实证明这样的判断是无效的。

我们来做一个测试:

def h(p):
    if p is None:
        print("None")
    elif p is []:
        print("[]")
    else:
        print("else")
        print(len(p))

执行print(h([]))
输出:

else
0
None

由此可见,我们要学会避免这种判别list为空的方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容