lintcode:二叉树的层次遍历
生活随笔
收集整理的這篇文章主要介紹了
lintcode:二叉树的层次遍历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
地址:
http://lintcode.com/zh-cn/problem/binary-tree-level-order-traversal/
借助隊列來完成
class Solution { public:/** @param root: A Tree* @return: Level order a list of lists of integer*/vector<vector<int>> levelOrder(TreeNode * root) {// write your code herevector<vector<int>> res;if(root==NULL)return res;queue<TreeNode*> queue;queue.push(root);while(!queue.empty()){vector<int> cur;int len = queue.size(); while(len--){TreeNode *tmp=queue.front(); cur.push_back(tmp->val);queue.pop();if(tmp->left)queue.push(tmp->left);if(tmp->right)queue.push(tmp->right);}res.push_back(cur);}return res;} };?
http://lintcode.com/zh-cn/problem/binary-tree-level-order-traversal-ii/
給出一棵二叉樹,返回其節點值從底向上的層次序遍歷(按從葉節點所在層到根節點所在的層遍歷,然后逐層從左往右遍歷)
這個題目是從底向上,其實類似上題,主要是因為用了vector方便很多:
class Solution { public:/** @param root: A tree* @return: buttom-up level order a list of lists of integer*/vector<vector<int>> levelOrderBottom(TreeNode * root) {// write your code herequeue<TreeNode*> queue;vector<vector<int>> res;int len;if(root==NULL)return res;queue.push(root);while(!queue.empty()){len = queue.size();vector<int> cur;while(len--){TreeNode* temp = queue.front();cur.push_back(temp->val);queue.pop();if(temp->left){queue.push(temp->left);}if(temp->right){queue.push(temp->right);}}if(!cur.empty())res.insert(res.begin(),cur);}return res;} };?
轉載于:https://www.cnblogs.com/rimochiko/p/8440790.html
總結
以上是生活随笔為你收集整理的lintcode:二叉树的层次遍历的全部內容,希望文章能夠幫你解決所遇到的問題。