按层打印二叉树 发表于 2019-05-26 | 分类于 剑指offer 题目从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路记录上一层的子节点个数,才能按个数分行,引入一个辅助队列 代码12345678910111213141516171819202122232425262728293031function Print(pRoot) { const queue = [], res = []; if (pRoot === null) { return res; } queue.push(pRoot); let nextLevel = 0; // 下一层节点个数 let toBePrinted = 1; // 这一层还有多少个节点要打印 let list = []; // 存放每一层节点 while (queue.length) { const pNode = queue.shift(); list.push(pNode.val); if (pNode.left !== null) { queue.push(pNode.left); nextLevel++; } if (pNode.right !== null) { queue.push(pNode.right); nextLevel++; } toBePrinted--; if (toBePrinted === 0) { res.push(list); list = []; toBePrinted = nextLevel; nextLevel = 0; } } return res;}