[leetcode] 107.Binary Tree Level Order Traversal II

来源:互联网 发布:淘宝违规如何申诉 编辑:程序博客网 时间:2024/05/27 06:53

题目:
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]
]
题意:
给定一个二叉树,从底部往顶部层次遍历。
思路:
根据之前完成的从顶部往底部的层次遍历的方法,只要将结果倒一下就ok。
以上。
代码如下:

/** * Definition for a binary tree node. * 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>> result;        if(root == NULL)return result;        vector<int> tempLevel(1,root->val);        vector<TreeNode *>nodes(1,root);        while(nodes.size() != 0){            result.push_back(tempLevel);            tempLevel.clear();            vector<TreeNode *> newNodes;            for(auto a:nodes){                if(a->left != NULL){                    newNodes.push_back(a->left);                    tempLevel.push_back(a->left->val);                }                if(a->right != NULL){                    newNodes.push_back(a->right);                    tempLevel.push_back(a->right->val);                }            }            nodes = newNodes;        }        vector<vector<int>> res;        for(int i = result.size() - 1; i >= 0; i--)            res.push_back(result[i]);        return res;    }};
0 0
原创粉丝点击