二叉树的层次遍历
Posted shwzh1990
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的层次遍历相关的知识,希望对你有一定的参考价值。
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,null,null,15,7]
,
3 / 9 20 / 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
先直接上代码
class Solution(object): def levelOrder(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ queue = [] if not root: return queue def helper(node, level): if len(queue) == level: queue.append([]) #每次进入一个新的层 我们都会新加载一个新的列表 queue[level].append(node.val) if node.left: helper(node.left, level + 1) if node.right: helper(node.right, level + 1) helper(root, 0) return queue
此程序的具体原理请参见https://www.cxyxiaowu.com/6874.html
如果我们仔细分析上面的代码会发现实际上 指针还是先遍历了所有的左子树 然后把左子树的元素依次的放到了每个list里面 然后再等待右子树的元素依次放入到list里面
中序遍历 后序遍历 还有前序遍历都是属于深度的遍历,而层次遍历是属于广度的遍历方式。
在此我们得到了 写算法的四个模板, 广度遍历模板和深度遍历的模板。
以上是关于二叉树的层次遍历的主要内容,如果未能解决你的问题,请参考以下文章
python-leetcode102-树的宽度遍历二叉树的层次遍历