已知二叉树的根结点指针TreeNode* root以及链表上结点的深度,请设计算法返回一个链表ListNode,该链表代表该深度上所有结点的值,并按树上从左往右的顺序链接,深度不能超过树的高度,且树上结点的值为不大于100000的非负整数。
class TreeLevel:
    def getTreeLevel(self, root, dep):
        if not root: return
        nodeStack = [root]
        res = []
        while nodeStack:
            res.append([i.val for i in nodeStack])
            nodeStack = [i for node in nodeStack for i in (node.left, node.right) if i]
        dummy = ListNode(0)
        pre = dummy
        for i in res[dep - 1]:
            node = ListNode(i)
            pre.next = node
            pre = pre.next
        return dummy.next
    def getTreeLevel(self, root, dep):
        if not root:
            return None
        
        queue = []
        queue.append((1, root))
        head = p = ListNode(-1)
        
        while queue:
            top = queue.pop(0)
            if top[0] == dep:
                node = ListNode(top[1].val)
                p.next = node
                p = p.next
            else:
                if top[1].left:
                	queue.append((top[0] + 1, top[1].left))
                if top[1].right:
                    queue.append((top[0] + 1, top[1].right))
                    
        return head.next