Binary Tree Level Order Traversal II
竟然c语言都不支持,而且vector实在是不熟,各种run error,题目也比较闹心,竟然要倒过来输出。
我的做法:先求二叉树的最大深度,然后倒过来dfs一下~
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<vector<int> >res; int maxDepth(TreeNode *root){ if(!root) return 0; return max(maxDepth(root->left),maxDepth(root->right))+1; } void dfs(TreeNode *root,int level){ if(!root) return; res[level].push_back(root->val); dfs(root->left,level-1); dfs(root->right,level-1); } vector<vector<int> > levelOrderBottom(TreeNode *root) { int depth = maxDepth(root); if(!depth) return res; for(int i = 0 ; i < depth ; i++){//开始时没初始化一直run error,vector不会啊。。。 res.push_back(vector<int>()); } dfs(root,depth-1); return res; } };