107. 二叉树的层次遍历 II
生活随笔
收集整理的這篇文章主要介紹了
107. 二叉树的层次遍历 II
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
例如:
給定二叉樹?[3,9,20,null,null,15,7],
返回其自底向上的層次遍歷為:
[[15,7],[9,20],[3] ]解法一:?
/*** 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) {if(!root) return {};queue<TreeNode *> qu;qu.push(root);vector<vector<int>> res;while(!qu.empty()){vector<int> temp;int n = qu.size();while(n--){TreeNode * s = qu.front();qu.pop();temp.push_back(s->val);if(s->left) qu.push(s->left);if (s->right) qu.push(s->right);}res.insert(res.begin(), temp);}return res; } };解法二:
/*** 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){vector<vector<int>> result;vector<int> temp;queue<TreeNode*> TreeQueue;stack<vector<int>> TreeStack;unsigned long cursize = 0;if (root == NULL){return result;}TreeQueue.push(root);while (TreeQueue.size() != 0){cursize = TreeQueue.size();for (unsigned int index = 0; index < cursize; index++){TreeNode* indexnode = TreeQueue.front();TreeQueue.pop();temp.push_back(indexnode->val);if (indexnode->left != NULL){TreeQueue.push(indexnode->left);}if (indexnode->right != NULL){TreeQueue.push(indexnode->right);}}TreeStack.push(temp);temp.clear();}while (TreeStack.empty() != true){result.push_back(TreeStack.top());TreeStack.pop();}return result;} };?
總結
以上是生活随笔為你收集整理的107. 二叉树的层次遍历 II的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 泰拉瑞亚手游鹿角怪怎么召唤
- 下一篇: 【C++ Primer | 19】控制内