leetcode - Binary Tree Level Order Traversal II

来源:互联网 发布:单位网络监测系统 知乎 编辑:程序博客网 时间:2024/05/29 17:05

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3   / \  9  20    /  \   15   7

return its bottom-up level order traversal as:

[  [15,7],  [9,20],  [3]]
分析:维护两个队列分别为二叉树的节点以及它的高度,逐层遍历
class Solution {public:    vector<vector<int> > levelOrderBottom(TreeNode *root) {        vector<vector<int> > v;        if(root == NULL) return v;        queue<TreeNode*> q;        queue<int> qlevel;        q.push(root);        qlevel.push(1);        vector<int> temp;        int l = 1;        while(!q.empty())        {            TreeNode *node = q.front();            int level = qlevel.front();            if(l < level)            {                v.push_back(temp);                temp.clear();                l++;            }            temp.push_back(node->val);            if(node->left)            {                q.push(node->left);                qlevel.push(level+1);            }            if(node->right)            {                q.push(node->right);                qlevel.push(level+1);            }                        q.pop();            qlevel.pop();        }        v.push_back(temp);        reverse(v.begin(), v.end());        return v;    }};

0 0
原创粉丝点击