107. 二叉树的层次遍历 II

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7
返回其自底向上的层次遍历为:

[
  [15,7],
  [9,20],
  [3]
]
class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector<vector<int>> res;
        if(root==NULL)
            return res;
        TreeNode* temp;
        int psize=1;
        int childsize=0;
        queue<TreeNode*> q;
        q.push(root);
        vector<int> q_val;
        do
        {
            temp=q.front();
            q_val.push_back(temp->val);
            q.pop();
            if(temp->left)//根据父节点个数,每次把同一层的左右子节点入队
            {
                q.push(temp->left);
                childsize++;
            }
            if(temp->right)
            {
                q.push(temp->right);
                childsize++;
            }
            psize--;//父节点减一
            if(psize==0)//遍历了一层
            {
                res.push_back(q_val);
                q_val.clear();
                psize=childsize;
                childsize=0;
            }
            
        }while(!q.empty()); 
        reverse(res.begin(),res.end());
        return res;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如...
    vbuer阅读 212评论 0 0
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 难度:中等 要求: 给出一棵二叉树,返回其节点值从底向上的层...
    柒黍阅读 197评论 0 0
  • 描述 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历...
    6默默Welsh阅读 526评论 0 1
  • 给出一棵二叉树,返回其节点值从底向上的层次序遍历(按从叶节点所在层到根节点所在的层遍历,然后逐层从左往右遍历)。原...
    和蔼的zhxing阅读 388评论 0 0
  • 吃不了运动的苦,就不要羡慕别人身材好; 吃不了工作的苦,就不要羡慕别人薪资高; 吃不了学习成长的苦,将来就得忍受和...
    花小美就是我阅读 229评论 0 1