c_cpp 二叉树级别顺序遍历
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 二叉树级别顺序遍历相关的知识,希望对你有一定的参考价值。
vector<vector<int>> binary_tree_level_order_traversal(treenode *root) {
vector<vector<int>> res;
if(!root) return res;
vector<int> nodes_this_level;
queue<treenode*> q; // should be queue not deque, because deque has methods push_back, push_front, pop_back, pop_front
q.push(root);
int cur_level = 1, next_level = 0;
vector<int> nodes_next_level;
while(!q.empty()) {
treenode *cur = q.top();
q.pop();
//if(!cur) continue; // no need to have this
nodes_this_level.push_back(cur->val);
cur_level--;
if(cur->left) {
q.push(cur->left);
next_level++;
}
if(cur->right) {
q.push(cur->right);
next_level++;
}
if(cur_level == 0) {
res.push_back(nodes_this_level);
nodes_this_level.clear();
cur_level = next_level;
next_level = 0;
}
}
return res;
}
以上是关于c_cpp 二叉树级别顺序遍历的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 105.从预订和顺序遍历构建二叉树--DraicultyMedium - 2018.9.12
java 103.二叉树之字形级别顺序遍历(BFS).java
java 103.二叉树之字形级别顺序遍历(BFS).java
java 103.二叉树之字形级别顺序遍历(BFS).java
java 103.二叉树之字形级别顺序遍历(BFS).java
java 103.二叉树之字形级别顺序遍历(BFS).java