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