Leetcode 103 二叉樹的鋸齒形層次遍歷 (二叉樹的層次遍歷)
阿新 • • 發佈:2018-11-11
給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。
例如:
給定二叉樹 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回鋸齒形層次遍歷如下:
[
[3],
[20,9],
[15,7]
]
是二叉樹的層次遍歷的一種變式,根據奇偶數層來判斷是否將這一層的序列倒置。
程式碼如下:
/** * 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) { vector<vector<int>>v; vector<int>v1; TreeNode* t=root; if(t==NULL) { return v; } queue<TreeNode*>q; q.push(t); int i=0; while (!q.empty()) { v1.clear(); int Size=q.size(); i++; for (int j=0;j<Size;j++) { TreeNode* temp=q.front(); q.pop(); if(temp->left) { q.push(temp->left); } if(temp->right) { q.push(temp->right); } v1.push_back(temp->val); } if(i%2==0) reverse(v1.begin(),v1.end()); v.push_back(v1); } return v; } };