国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

103. Binary Tree Zigzag Level Order Traversal

2019-11-06 08:50:26
字體:
來源:轉載
供稿:網友

問題描述 Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).

For example: Given binary tree [3,9,20,null,null,15,7],

3/ /9 20 / / 15 7

return its zigzag level order traversal as:

[[3],[20,9],[15,7]]

解決思路 參考102題,我們只需要將隊列變成棧就可以。但是這里需要考慮一個問題,就是想z型輸出,相鄰的兩層之間的左右節點push的順序也需要變換。

代碼

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { if (root == NULL) return vector<vector<int>>(); stack<TreeNode*> cur; stack<TreeNode*> next; cur.push(root); vector<vector<int>> result; vector<int> tmp; bool flag = false; while(!cur.empty() || !next.empty()) { if (!cur.empty()) { tmp.push_back(cur.top()->val); if (!flag) { if (cur.top()->left != NULL) next.push(cur.top()->left); if (cur.top()->right != NULL) next.push(cur.top()->right); } else { if (cur.top()->right != NULL) next.push(cur.top()->right); if (cur.top()->left != NULL) next.push(cur.top()->left); } cur.pop(); } else { cur = next; next = stack<TreeNode*>(); result.push_back(tmp); tmp = vector<int>(); flag = !flag; } } result.push_back(tmp); return result; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 融水| 大理市| 日土县| 南涧| 清原| 天气| 资讯 | 阳原县| 盘锦市| 夏河县| 安龙县| 吴桥县| 四子王旗| 东港市| 吉木乃县| 北京市| 五指山市| 永兴县| 宁蒗| 安吉县| 嘉义市| 常德市| 报价| 保康县| 沂水县| 呼玛县| 连城县| 昌都县| 冀州市| 托克逊县| 宜君县| 尼玛县| 冷水江市| 沙田区| 建水县| 诸城市| 蓝田县| 北宁市| 绥滨县| 荆州市| 上蔡县|