剑指offer刷题之java实现的从上往下打印二叉树

来源:互联网 发布:沙丁鱼流量软件 编辑:程序博客网 时间:2024/04/30 21:07
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+" ");}    }}

0 0