自上而下打印二叉树

python 短小精悍,golang 简单高效

题面

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回

[3,9,20,15,7]

python

  • 队列 边进边出
    def levelOrder(root: TreeNode) -> List[int]:
      rs = []
      q = [root]
      while len(q):
          cur = q.pop(0)
          cur and rs.append(cur.val)
          cur and cur.left and q.append(cur.left)
          cur and cur.right and q.append(cur.right)
      return rs

    golang

  • 层序遍历 层层递进
    func levelOrder(root *TreeNode) []int {
      var rs []int
      for level :=[]*TreeNode{root};len(level)>0;{
          tmp := make([]*TreeNode, 0)
          for i:=0;i<len(level);i++{
              if level[i] != nil {
                  rs = append(rs, level[i].Val)
                  if level[i].Left != nil {
                      tmp = append(tmp, level[i].Left)
                  }
                  if level[i].Right != nil{
                      tmp = append(tmp, level[i].Right)
                  }
              }
          }
          level=tmp 
      }
      return rs
    }

性能

提交时间 提交结果 运行时间 内存消耗 语言
18 分钟前 通过 48 ms 13.5 MB Python3
1 小时前 通过 0 ms 2.6 MB Go
本作品采用《CC 协议》,转载必须注明作者和本文链接
pardon110
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
开发者 @ 社科大
文章
134
粉丝
24
喜欢
101
收藏
55
排名:106
访问:8.9 万
私信
所有博文
社区赞助商