链接:
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=13&tqId=11212&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
描述:
示例:
代码:
/*
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>> result;
if(pRoot == nullptr) return result;
stack<TreeNode*> st;
queue<TreeNode*> q;
st.push(pRoot);
int dir = 1;
vector<int> v;
while(!st.empty()){
int size = st.size();
for(int i = 0;i<size;i++){
TreeNode* curr = st.top();
st.pop();
v.push_back(curr->val);
TreeNode* first = (dir == 1)?curr->left:curr->right;
TreeNode* second = (dir == 1)?curr->right:curr->left;
if(first != nullptr) q.push(first);
if(second != nullptr) q.push(second);
}
result.push_back(v);
while(!q.empty()){
st.push(q.front());
q.pop();
}
dir = (dir == 1)?2:1;
v.clear();
}
return result;
}
};