这个OJ在leetcode上的输入值是什么(Binary Tree Level Order Traversal)?

时间:2015-05-27 21:42:05

标签: python tree

这是来自leetcode的问题。 https://leetcode.com/problems/binary-tree-level-order-traversal/

所以这是我的代码,但我真的不知道输入是什么以及它与下面定义的TreeNode的关系。

  

二叉树节点的定义。

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # @param {TreeNode} root
    # @return {integer[][]}
    def levelOrder(self, root):
        if not root:
            return []
        else:
            printout, CurrLevel = [], [root]
            while CurrLevel:
                printout.extend(CurrLevel)
                NextLevel = []
                for item in CurrLevel:
                    temp = []
                    if item.left != None:
                        temp.append(item.left)
                    if item.right != None:
                        temp.append(item.right)
                    NextLevel = NextLevel.extend(temp)
                CurrLevel = NextLevel
            return printout
  

输入:[1,2]

     

输出:[[1,2]]

     

预期:[[1],[2]]

所以我终于遇到了这个,那么treenode究竟是什么呢?为什么它看起来像一个列表? 这是一个OJ问题,我对测试用例非常不确定,因为我无法理解这里提供的treenode。如问题所述,似乎只有一个" root"每次输入元素。

我感到很困惑,因为对于每个测试用例(leetcode中的每个问题都包含数十或数百个测试用例以测试程序的有效性),只输入一个TreeNode(名为root),如果是,我可以愉快地引用它的.val,它的.left或它的.right,因此一棵树可以从" root"元件。但是通过我在这里看到的测试用例(一旦程序产生了错误的解决方案,它就会生成一份报告,这就是为什么我要显示"输入" [1,2]这里提供的),我看到一个列表,或者至少是列表,其中包含两个元素。我所期望的只是在这里输入一个名为root的TreeNode,但现在我看到了一个列表。很明显,我知道我应该打印出一份列表清单,这与我在这里提出的混乱有所不同。 所以在[1,2]中,我无法理解1和2分别代表一个整数?一个treenode? 实际上我认为[1,2]本身就是一个treenode,其中1和2代表.val,.left。

重要的是,我的代码基于这样的假设,即每个输入都是一个节点,并留下[1,2,3](可能代表TreeNode的.val,.left,.right)后面的任何输入。我后来发现我确实做错了,修改了我的代码如下:

class Solution:
    # @param {TreeNode} root
    # @return {integer[][]}
    def levelOrder(self, root):
        if not root:
            return []
        else:
            printout, CurrLevel = [], [root]
            while CurrLevel:
                values = []
                for node in CurrLevel:
                    values = values.append(node.val)
                printout.append(values)
                NextLevel = []
                for item in CurrLevel:
                    temp = []
                    if item.left != None:
                        temp.append(item.left)
                    if item.right != None:
                        temp.append(item.right)
                    NextLevel = NextLevel.extend(temp)
                CurrLevel = NextLevel
            return printout

这次似乎发生以下错误:

  

输入:[1]

     

输出:[null]

     

预期:[[1]]

我检查了我的代码,发现node.val在输入时产生1:[1],而值产生[null]!这太奇怪了!

0 个答案:

没有答案