python_lintcode_69二叉树的层次遍历
2017-10-02 22:19
369 查看
69二叉树的层次遍历
题目
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)您在真实的面试中是否遇到过这个题? Yes
样例
给一棵二叉树 {3,9,20,#,#,15,7} :
. 3 / \ 9 20 / \ 15 7
返回他的分层遍历结果:
[ [3], [9,20], [15,7] ]
思路
主要是实现先进先出FIFO代码
""" Definition of TreeNode: class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None """ class Solution: """ @param: root: A Tree @return: Level order a list of lists of integer """ def levelOrder(self, root): # write your code here if root is None:return [] stack = [root] yy=[] #none就出 while stack: y=[] #出栈 #每一层 for i in range(len(stack)): current = stack.pop(0) y.append(current.val) if current.left: #入栈 stack.append(current.left) if current.right: stack.append(current.right) yy.append(y) return yy
另外,我同学用的队列
""" Definition of TreeNode: class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None """ import Queue class Solution: """ @param: root: A Tree @return: Level order a list of lists of integer """ def levelOrder(self, root): res = [] q = Queue.Queue() if root: q.put(root) while not q.empty(): level = [] length = q.qsize() for i in range(length): node = q.get() level.append(node.val) if node.left: q.put(node.left) if node.right: q.put(node.right) res.append(level) return res
相关文章推荐
- [LintCode 69] 二叉树的层次遍历 (Python)
- LintCode | 69. 二叉树的层次遍历
- LintCode【简单】69. 二叉树的层次遍历。代码及思路
- LintCode-剑指Offer-(69)二叉树的层次遍历
- LintCode 69 二叉树的层次遍历
- lintcode 69. 二叉树的层次遍历
- 【LintCode 简单】69. 二叉树的层次遍历
- LintCode 69-二叉树的层次遍历
- LintCode-69.二叉树的层次遍历
- 【LintCode-69】二叉树的层次遍历(Java实现)
- lintcode-二叉树的层次遍历-69
- Lintcode---二叉树的层次遍历(原型)
- lintcode-二叉树的层次遍历 II
- LintCode 二叉树的前序,中序,后序,层次遍历
- LintCode笔记(4)——二叉树的层次遍历II
- [Lintcode]Binary Tree Level Order Traversal II 二叉树的层次遍历 II
- LintCode-剑指Offer-(71)二叉树的锯齿形层次遍历
- Lintcode 二叉树的层次遍历 II
- 二叉树的锯齿形层次遍历,lintcode
- LintCode-剑指Offer-(70)二叉树的层次遍历Ⅱ