给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)
给出一棵二叉树 {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
按照从下往上的层次遍历为:
[ [15,7], [9,20], [3]]
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /* * @param root: A tree * @return: buttom-up level order a list of lists of integer */ vector<vector<int>> levelOrderBottom(TreeNode * root) { // write your code here vector<vector<int>> v; queue<TreeNode*> q; if(root==NULL) { return v; } q.push(root); int len=1; while(!q.empty()) { vector<int> s; len=q.size();//表示该层的节点数 //将下一层的节点都push到队列中。 while(len--) { TreeNode* temp=q.front(); s.push_back(temp->val); q.pop(); if(temp->left) { q.push(temp->left); } if(temp->right) { q.push(temp->right); } } v.push_back(s); } vector<vector<int>> k; for(int i=0;i<v.size();i++){ k.push_back(v[v.size()-i-1]); } return k; } };