这个题就是实现树的层次遍历
树的层次遍历
遍历结果 1 2 3 4 5 6 7
在道题确实有一定的难度,我想了很久也没有头绪,拜读了大佬的程序后豁然开朗,这主要是用两个栈来实现我们想要的结果
data存储输出顺序
arr存储每一层的顺序
如果按照每一行从左到右的顺序存入arr
我们先shift根节点进入data数组,存入根的左孩子和右孩子
这时左孩子在第一位,shift根的左孩子进入data数组,push左孩子的左孩子和右孩子
这时站内顺序为:根的右孩子,根左孩子的左孩子,根左孩子的右孩子
我们再向后push根的右孩子的左孩子和右孩子,shift根的右孩子进入data数组
…
直到shift最后一个叶节点 即arr为空时停止
function PrintFromTopToBottom(root)
{
// write code here
var arr=[];
var data=[];
if(root!=null){
arr.push(root);
}
while(arr.length!=0){
var node=arr.shift();
if(node.left!=null){
arr.push(node.left);
}
if(node.right!=null){
arr.push(node.right);
}
data.push(node.val);
}
return data;
}