package mine;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
/**
*
* @author 毛二
* @data 2015-8-9
* @comments 层次遍历二叉树
* 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
* 访问根节点,并将根节点入队。
* 当队列不空的时候,重复以下操作。
* 1、弹出一个元素。作为当前的根节点。
* 2、如果根节点有左孩子,访问左孩子,并将左孩子入队。
* 3、如果根节点有右孩子,访问右孩子,并将右孩子入队。
*/
public class LevelPrintTree {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> res = new ArrayList<Integer>();
Queue<TreeNode> node = new LinkedList<TreeNode>();
if(root == null){
return res;
}
res.add(root.val);
node.add(root);
while(node.size()!=0){
root = node.poll();
if(root.left!=null){
res.add(root.left.val);
node.add(root.left);
}
if(root.right!=null){
res.add(root.right.val);
node.add(root.right);
}
}
return res;
}
public static void main(String[] args) {
TreeNode t = new TreeNode();
TreeNode m = t.createTree();
t.inOrder(m);
System.out.println();
LevelPrintTree lpt = new LevelPrintTree();
ArrayList<Integer> a = lpt.PrintFromTopToBottom(m);
for(int i:a){
System.out.print(i+" ");
}
}
}
剑指offer刷题之java实现的从上往下打印二叉树
最新推荐文章于 2024-07-31 16:30:56 发布