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)
  • 相关阅读:
    最新java学习路线:含阶段性java视频教程完整版
    2019最新WEB前端开发小白必看的学习路线(附学习视频教程)
    区块链技术学习路线(全网最新)
    java学习路线之必会的java基础教程
    新手如何学习python(python学习路线图)
    python学习教程,史上最全面的python学习路线图
    机器学习中的误差 Where does error come from?
    主成分分析 Principle Component Analysis
    线性回归 Linear Regression
    MCtalk对话尚德机构:AI讲师,假套路还是真功夫?
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10547334.html
Copyright © 2011-2022 走看看