zoukankan      html  css  js  c++  java
  • 60把二叉树打印成多行

    题目描述

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


    写成了平衡二叉树的程序。。。。。。。又没认真审题

     1 public class Solution {
     2     ArrayList<ArrayList<Integer> > Print(TreeNode root) {
     3         Queue<TreeNode> queue = new LinkedList<TreeNode>();
     4         ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
     5         if(root ==null) return res;
     6         int layer = 0;
     7         queue.add(root);
     8         while(!queue.isEmpty()){
     9             ArrayList<Integer> restemp = new ArrayList<Integer>();
    10                 while(restemp.size()<(1<<layer)){ //2的n次方 1<<n
    11                     TreeNode node = queue.remove();
    12                     restemp.add(node.val);
    13                     if(node.left!=null) queue.add(node.left);
    14                     if(node.right!=null) queue.add(node.right);
    15                 }
    16             layer++;
    17             res.add(restemp);
    18         }
    19         return res;
    20     }
    21     
    22 }




    用end 记录每层的节点数目

     1 public class Solution {
     2     ArrayList<ArrayList<Integer> > Print(TreeNode root) {
     3         Queue<TreeNode> queue = new LinkedList<TreeNode>();
     4         ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
     5         ArrayList<Integer> restemp = new ArrayList<Integer>();
     6         if(root ==null) return res;
     7         int start = 0;
     8         int end = 1;
     9         queue.add(root);
    10         while(!queue.isEmpty()){
    11             TreeNode node = queue.remove();
    12             restemp.add(node.val);
    13             start++;
    14             if(node.left!=null) queue.add(node.left);
    15             if(node.right!=null) queue.add(node.right);
    16             if(start==end){
    17                 end = queue.size();//上层的大小
    18                 res.add(restemp);
    19                 restemp = new ArrayList<Integer>();
    20                 start=0;
    21             }
    22         }
    23         return res;
    24     }
    25     
    26 }

    c++:20180730

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };
    10 */
    11 class Solution {
    12 public:
    13         vector<vector<int> > Print(TreeNode* pRoot) {
    14 
    15             vector<vector<int>> res ;
    16             queue<TreeNode*> q;
    17             if(pRoot==NULL) return res;
    18             q.push(pRoot);
    19             
    20             int size ;
    21             while(!q.empty()){
    22                 vector<int> temp ;
    23                 size = q.size();
    24 
    25                 for(int i = 0;i<size;i++){
    26                     TreeNode* root = q.front();
    27                     q.pop();
    28                     temp.push_back(root->val);
    29                     
    30                     if(root->left!=NULL) q.push(root->left);
    31                     if(root->right!=NULL) q.push(root->right);
    32 
    33                 }
    34                 res.push_back(temp);
    35             }
    36             return res;
    37         }
    38     
    39 };
  • 相关阅读:
    POJ 2253 Frogger
    POJ 2387
    codevs3981动态最大子段和(线段树)
    P3398仓鼠(LCA)
    codevs1036商务旅行(LCA)
    codevs3728联合权值(LCA)
    P3390矩阵快速幂
    codevs1574广义斐波那契数列
    POJ3070Fibonacci
    P3379最近公共祖先(LCA)
  • 原文地址:https://www.cnblogs.com/zle1992/p/8289941.html
Copyright © 2011-2022 走看看