zoukankan      html  css  js  c++  java
  • 栈和队列_leetcode102

    # Definition for a binary tree node.
    # class TreeNode(object):
    # def __init__(self, x):
    # self.val = x
    # self.left = None
    # self.right = None

    class Solution(object):
    def levelOrder(self, root):
    """
    :type root: TreeNode
    :rtype: List[List[int]]
    """

    res = []

    if not root :
    return res

    queue = []

    queue.append(root)

    while queue:
    node = queue.pop()

    res.append(node.val)

    if node.left:
    queue.append(node.left)
    if node.right:
    queue.append(node.right)

    return res





    class Solution2(object):
    def levelOrder(self, root):
    """
    :type root: TreeNode
    :rtype: List[List[int]]
    """

    res = []

    if not root :
    return res

    queue = []

    level = 0
    pair = (root,level)
    queue.append(pair)

    while queue:
    pair = queue.pop()

    if len(res) == pair[1]:
    res.append([])
    res[pair[1]].append(pair[0].val)

    if pair[0].right:
    queue.append((pair[0].right,pair[1]+1))
    if pair[0].left:
    queue.append((pair[0].left,pair[1]+1))



    return res



    # 队列中新进的节点都是同一层的节点
    class Solution3(object):
    def levelOrder(self, root):
    """
    :type root: TreeNode
    :rtype: List[List[int]]
    """

    res = []

    if not root :
    return res

    queue = []
    queue.append(root)

    while queue:
    level = []

    for i in range(len(queue)): # 这段代码写的不好 20100304
    node = queue.pop(0)
    level.append(node.val)

    if node.left:
    queue.append(node.left)
    if node.right:
    queue.append(node.right)

    res.append(level)
    return res

    # 修改版
    class Solution32(object):
    def levelOrder(self, root):
    """
    :type root: TreeNode
    :rtype: List[List[int]]
    """

    res = []

    if not root :
    return res

    queue = []
    queue.append(root)

    while queue:

    level = []
    length = len(queue)
    for i in range(length): # 这样改的就比较清楚了
    node = queue.pop(0)
    level.append(node.val)

    if node.left:
    queue.append(node.left)
    if node.right:
    queue.append(node.right)

    res.append(level)
    return res

    class Solution4(object):
    def levelOrder(self, root):
    """
    :type root: TreeNode
    :rtype: List[List[int]]
    """

    res = []

    self.level(root,0,res)

    return res

    def level(self,node,lev,res):
    if not node:
    return

    if len(res) == lev:
    res.append([])

    res[lev].append(node.val)

    self.level(node.left,lev+1,res)
    self.level(node.right,lev+1,res)
  • 相关阅读:
    jQuery动态效果
    10.嗖嗖移动业务大厅
    10.IDEAD 的xml中配置DTD
    浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag
    nginx 重启
    fiddler 路由设置
    JavaScript Source Map 详解
    xdebug.var_display_max_data
    PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
    PHP中文件包含的路径问题
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10547334.html
Copyright © 2011-2022 走看看