[Leetcode] Binary Tree Level Order Traversal II

来源:互联网 发布:the ludlows 知乎 编辑:程序博客网 时间:2024/06/07 00:35
/** * 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) {        queue<TreeNode*> S;        vector<vector<int>> reLevel;        int i=0;        int j=0;        if(!root) return reLevel;        S.push(root);        i=1;        TreeNode* p= nullptr;         vector<int> cur;        while(!S.empty()){            if(i == 0){                i=j;                j=0;                reLevel.push_back(cur);                cur.clear();            }            p=S.front();            cur.push_back(p->val);            S.pop();            i=i-1;            if(p->left){                j=j+1;                S.push(p->left);            }            if(p->right){                j=j+1;                S.push(p->right);            }        }        reLevel.push_back(cur);        reverse(reLevel.begin(),reLevel.end());          return reLevel;       }};

第一次利用课本知识写出能运行的代码,渣渣纪念一下。利用i指示当前层次,j指示下一层元素个数,一定要记得对空指针进行异常处理

0 0