LeetCode 107.Binary Tree Level Order Traversal II (二叉樹的層次遍歷 II)
阿新 • • 發佈:2018-12-12
題目描述:
給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
例如:
給定二叉樹 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回其自底向上的層次遍歷為:
[
[15,7],
[9,20],
[3]
]
AC C++ Solution:
這道題和上到下層次遍歷其實是一樣的,只要把上到下層次遍歷的結果倒置一下就好了。
本題程式碼:
/** * 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) { buildvector(root,0); reverse(res.begin(),res.end()); //將自頂向下的層次遍歷倒序 return res; } void buildvector(TreeNode *root, int depth) { if(root == NULL) return; if(res.size() == depth) res.push_back(vector<int>()); res[depth].push_back(root->val); buildvector(root->left, depth+1); buildvector(root->right,depth+1); } private: vector< vector<int> > res; };