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 };
  • 相关阅读:
    HDU 5912 Fraction (模拟)
    CodeForces 722C Destroying Array (并查集)
    CodeForces 722B Verse Pattern (水题)
    CodeForces 722A Broken Clock (水题)
    CodeForces 723D Lakes in Berland (dfs搜索)
    CodeForces 723C Polycarp at the Radio (题意题+暴力)
    CodeForces 723B Text Document Analysis (水题模拟)
    CodeForces 723A The New Year: Meeting Friends (水题)
    hdu 1258
    hdu 2266 dfs+1258
  • 原文地址:https://www.cnblogs.com/zle1992/p/8289941.html
Copyright © 2011-2022 走看看