把二叉樹打印成多行
阿新 • • 發佈:2019-04-13
== des right tmp itl 題目 存儲 pre while
題目描述
從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 解題思路: 這個題目跟打印“之”字形想法類似,不過這裏使用的是兩個隊列,循環存儲每層的節點。class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > res; if(pRoot == NULL) return res; queue<TreeNode *> que1, que2; que1.push(pRoot); res.push_back(vector<int>(1, pRoot->val)); TreeNode* tmpNode=NULL; while(!que1.empty() || !que2.empty()){ vector<int>tmpVct; while(!que1.empty()){ tmpNode = que1.front(); que1.pop(); if(tmpNode->left != NULL){ que2.push(tmpNode->left); tmpVct.push_back(tmpNode->left->val); } if(tmpNode->right != NULL){ que2.push(tmpNode->right); tmpVct.push_back(tmpNode->right->val); } } if(tmpVct.size() != 0) res.push_back(tmpVct); tmpVct.clear(); while(!que2.empty()){ tmpNode = que2.front(); que2.pop(); if(tmpNode->left != NULL){ que1.push(tmpNode->left); tmpVct.push_back(tmpNode->left->val); } if(tmpNode->right != NULL){ que1.push(tmpNode->right); tmpVct.push_back(tmpNode->right->val); } } if(tmpVct.size() != 0) res.push_back(tmpVct); } return res; } };
把二叉樹打印成多行