简单易懂,让我们来浅谈一下如何对树进行层序遍历吧
哈喽哈喽,我是你们的金樽清酒。树这个结构呀,在计算机领域是十分重要的。基本很多结构,都是树型结构。比如在前端领域,在浏览器通过http协议拿到html文件的时候不就是解析dom树嘛。那我们要解析一棵树,其实就是要遍历它,按照我们需要的顺序将树展开。
题目
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
ini
输入: root = [3,9,20,null,null,15,7]
输出: [[3],[9,20],[15,7]]
示例 2:
lua
输入: root = [1]
输出: [[1]]
示例 3:
ini
输入: root = []
输出: []
分析
树的层序遍历,是要我们将一棵树一层层的按顺序存进数组。其中用的最多的思路就是用队列的思想。因为队列是先进先出嘛。我们按照顺序,从头到顶,从左到右的先存进队列,那么自然出来的也是从头到顶,从左到右。但是要一层一层的保存,那我们就要进行一些操作了,那就一层一层处理呗。先把前面的出队,然后看它的左右是否有节点,再入队,循环处理。这样就可以一层层的进行操作了。
代码
js
function levelOrder(root: TreeNode | null): number[][] {
//二叉树的层序遍历,思想是什么呢?那就是用队列的思想。
if (!root) return []
let result = []
let stack = []
stack.push(root)
while (stack.length > 0) {
result.push([])
const len = stack.length
for (let i = 0; i < len; i++) {
const node = stack.shift()
result[result.length - 1].push(node.val)
if (node.left) {
stack.push(node.left)
}
if (node.right) {
stack.push(node.right)
}
}
}
return result
};
对不起友友们,复制过来不会格式化。有需要可以自行复制格式化。希望对你有所帮助。