[LeetCode] Binary Tree Level Order Traversal

来源:互联网 发布:加工中心圆弧编程100例 编辑:程序博客网 时间:2024/06/03 20:16
class Solution {public:    vector<vector<int> > levelOrder(TreeNode *root) {        vector<int> a;//记录所有层的val        vector<TreeNode*> tnode;        vector<vector<int> > result;        if(root == NULL)            return result;        tnode.push_back(root);        int begin = 0,end;                while(begin < tnode.size()){            end = tnode.size();            a.clear();            while(begin < end){//记录一层的val                TreeNode* node = tnode[begin];                a.push_back(node -> val);                if(node -> left != NULL)//记录下一层的TreeNode*                    tnode.push_back(node -> left);                if(node -> right != NULL)                    tnode.push_back(node -> right);                begin ++;            }            result.push_back(a);        }        return result;    }};

Binary Tree Level Order Traversal II

跟上面基本一样,只是返回结果需要翻转下即

class Solution {public:    vector<vector<int> > levelOrderBottom(TreeNode *root) {        vector<int> a;//记录所有层的val          vector<TreeNode*> tnode;          vector<vector<int> > result;          if(root == NULL)              return result;          tnode.push_back(root);          int begin = 0,end;                    while(begin < tnode.size()){              end = tnode.size();              a.clear();              while(begin < end){//记录一层的val                  TreeNode* node = tnode[begin];                  a.push_back(node -> val);                  if(node -> left != NULL)//记录下一层的TreeNode*                      tnode.push_back(node -> left);                  if(node -> right != NULL)                      tnode.push_back(node -> right);                  begin ++;              }              result.push_back(a);          }          return vector<vector<int> >(result.rbegin(),result.rend());      }};

下面是采用递归的方法进行遍历

class Solution {public:    vector<vector<int> > result;    void levelTra(TreeNode *root,int level){        if(root == NULL)            return;        if(result.size() == level){            vector<int> v;            result.push_back(v);        }        result[level].push_back(root -> val);        levelTra(root -> left,level + 1);        levelTra(root -> right,level + 1);    }    vector<vector<int> > levelOrderBottom(TreeNode *root) {        levelTra(root,0);        return vector<vector<int> >(result.rbegin(),result.rend());      }};



0 0
原创粉丝点击