关闭

把二叉树打印成多行

254人阅读 评论(0) 收藏 举报
分类:


  • 时间限制:1秒空间限制:32768K
  • 通过比例:36.66%
  • 最佳记录:0 ms|8552K

题目描述

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

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};
*/
class Solution {
public:
		vector<vector<int> > Print(TreeNode* pRoot) {
			vector<vector<int> > ret;
            if(!pRoot) return ret;
            vector<TreeNode *> queue;
            vector<int> curval;
            int start=0,end=0;
            queue.push_back(pRoot);
            
            while(start<=end){
                for(int i=start;i<=end;++i){
                    if(queue[i]->left) queue.push_back(queue[i]->left);
                    if(queue[i]->right) queue.push_back(queue[i]->right);
                	curval.push_back(queue[i]->val);
                }
                
                ret.push_back(curval);
                curval.clear();
                start=end+1;
                end=queue.size()-1;
            }
            return ret;
		}
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:53953次
    • 积分:1424
    • 等级:
    • 排名:千里之外
    • 原创:88篇
    • 转载:7篇
    • 译文:0篇
    • 评论:2条
    最新评论