您的位置:首页 > Web前端

剑指offer--把二叉树打印成多行

2017-08-07 19:46 309 查看

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

[java] view
plain copy

import java.util.ArrayList;  

  

  

/* 

public class TreeNode { 

    int val = 0; 

    TreeNode left = null; 

    TreeNode right = null; 

 

    public TreeNode(int val) { 

        this.val = val; 

 

    } 

 



*/  

public class Solution {  

    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {  

        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();  

        if(pRoot==null) return result;  

        ArrayList<TreeNode> queue = new ArrayList<TreeNode>();  

        ArrayList<Integer> temp = new ArrayList<Integer>();  

        ArrayList<Integer> start = new ArrayList<Integer>();  

        start.add(pRoot.val);  

        result.add(start);  

        int low = 0;  

        int high = 1;  

        int end = high;   

        queue.add(pRoot);  

        while(low<high){           

            TreeNode t = queue.get(low);  

            if(t.left!=null){  

                queue.add(t.left);  

                temp.add(t.left.val);  

                high++;  

            }  

            if(t.right!=null){  

                queue.add(t.right);  

                temp.add(t.right.val);  

                high++;  

            }  

            low++;  

            if(low==end){  

                end = high;  

                if(temp.size()!=0)  

                    result.add(temp);  

                temp = new ArrayList<Integer>();  

            }  

        }  

        return result;  

    }  

      

}  

原文链接http://blog.csdn.net/crazy__chen/article/details/45103617
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: