Binary Tree Level Order Traversal II 有不解。。。

来源:互联网 发布:数据的独立性是指 编辑:程序博客网 时间:2024/05/16 07:16

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],]

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

与Binary Tree Level Order Traversal类似。

将已经访问过的层中按顺序压入栈中,然后再弹栈输出。

代码中的有注释的if语句一旦去掉,就会运行超时。。。困惑ing

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > levelOrderBottom(TreeNode *root) {        vector<vector<int>> ret;        if(root == 0)            return ret;                list<vector<int>> tmp_result;               vector<int> level;                queue<TreeNode *> q;                q.push(root);        q.push(nullptr);                while(!q.empty())        {            TreeNode * cur = q.front();            q.pop();                        if(cur)            {                level.push_back(cur -> val);                if(cur -> left)                    q.push(cur -> left);                if(cur -> right)                    q.push(cur -> right);            }            else            {                //注释掉这里的if语句就会报错。。。                if(level.size() > 0)                {                    tmp_result.push_front(level);                    level.clear();                    q.push(nullptr);                }            }        }                 for(auto e:tmp_result)        {            ret.push_back(e);        }                return ret;                    }};


0 0
原创粉丝点击