leetcode 42:binary-tree-level-order-traversal-ii
阿新 • • 發佈:2020-08-16
題目描述
給定一個二叉樹,返回該二叉樹由底層到頂層的層序遍歷,(從左向右,從葉子節點到根節點,一層一層的遍歷) 例如: 給定的二叉樹是{3,9,20,#,#,15,7},3↵ / ↵ 9 20↵ / ↵ 15 7該二叉樹由底層到頂層層序遍歷的結果是
[↵ [15,7]↵ [9,20],↵ [3],↵]如果你不清楚“{1,#,2,3}"的含義的話,請繼續閱讀
OJ用這樣的方法將二叉樹序列化: 二叉樹的序列化遵循層序遍歷的原則,”#“代表該位置是一條路徑的終結,下面不再存在結點。 例如:
1↵ / ↵ 2 3↵ /↵ 4↵ ↵ 5
1 vector<vector<int> > levelOrderBottom(TreeNode* root) { 2 vector<vector<int>> vret; 3 if(root == NULL) 4 return vret; 5 stack<vector<int>> ret;6 queue<TreeNode*> stk; 7 stk.push(root); 8 while(!stk.empty()) 9 { 10 int size = stk.size(); 11 vector<int> tmp; 12 for(int i = 0;i < size;i++) 13 { 14 TreeNode* front = stk.front(); 15 tmp.push_back(front->val);16 stk.pop(); 17 if(front->left != NULL) 18 stk.push(front->left); 19 if(front->right != NULL) 20 stk.push(front->right); 21 } 22 ret.push(tmp); 23 } 24 while(!ret.empty()) 25 { 26 vret.push_back(ret.top()); 27 ret.pop(); 28 } 29 return vret; 30 }