zoukankan      html  css  js  c++  java
  • LeetCode#102 Binary Tree Level Order Traversal

    Problem Definition:

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

    For example:
    Given binary tree {3,9,20,#,#,15,7},

        3
       / 
      9  20
        /  
       15   7
    

    return its level order traversal as:

    [
      [3],
      [9,20],
      [15,7]
    ]
    

    Solution:

    1)二叉树的层序遍历:用队列来保存将要访问的节点。即在访问节点的过程中,将其子节点加入队列。

     1 def levelOrder(root):
     2         od=[]
     3         if not root:    #if empty
     4             return od
     5         qu=[]
     6         qu+=root,
     7         while qu:   
     8             r=qu.pop(0)
     9             od+=r.val
    10             if r.left:
    11                 qu+=r.left, 
    12             if r.right:
    13                 qu+=r.right,
    14         return od

    2)将不同层保存在不同的序列中。以上算法只能得到一个访问树中所有节点的层序顺序,而要将不同层分开,需要一个计数变量。

     1 def levelOrder(root):
     2         od=[]
     3         if not root:    #empty
     4             return od
     5         qu,cd=[],[]
     6         qu+=root,
     7         count=1    #计数变量
     8         while qu:   #not empty
     9             r=qu.pop(0)
    10             cd+=r.val
    11 
    12             if r.left:
    13                 qu+=r.left, 
    14             if r.right:
    15                 qu+=r.right,
    16 
    17             count-=1    #每次出队一个,计数减一
    18             if not count:  #一层结束,coun==0
    19                 od+=cd,
    20                 cd=[]
    21                 count=len(qu)  #重置count
    22         return od
  • 相关阅读:
    INSPIRED启示录 读书笔记
    INSPIRED启示录 读书笔记
    INSPIRED启示录 读书笔记
    INSPIRED启示录 读书笔记
    dialog窗口也能刷新
    js验证数字及操作备份
    工具类
    查询结果设置背景色
    decmain主体类经典保存备份
    jquery操作备份
  • 原文地址:https://www.cnblogs.com/acetseng/p/4667414.html
Copyright © 2011-2022 走看看