题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
利用一个队列存储二叉树的节点,以此树为例。
先把8放进队列,此时队列不为空,出队一个值,就是8,把值push进数组,然后判断8有没有左右孩子,所以6进队列,然后10队列。此时队列不为空,出队一个值6,并push进数组,6有左右孩子,所以5进队列,7进队列。此时队列不为空,出队一个值是10,10进数组,10有左右孩子,9进队列、11进队列。出队一个为5,放进数组,5没有左右孩子,继续出队…
代码实现:
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function PrintFromTopToBottom(root)
{
// write code here
var queue = [],
result = [],
pNode = null;
if (!root){
return [];
} else {
queue.push(root);
while (queue.length){
pNode = queue.shift();
result.push(pNode.val);
if (pNode.left){
queue.push(pNode.left);
}
if (pNode.right){
queue.push(pNode.right);
}
}
return result;
}
}