- 二叉树的锯齿形层次遍历
是leetcode103道题目,难度中等。
解法如下,思路很简单,借助两个栈,flag记录是先入左孩子还是先入右孩子。执行用时 :8 ms, 在所有 C++ 提交中击败了76.49%的用户
内存消耗 :13.3 MB, 在所有 C++ 提交中击败了86.78%的用户
class Solution { public: vector<vector<int>> zigzagLevelOrder(TreeNode* root) { vector<vector<int> >result; if(root==nullptr) return result; stack<TreeNode*> S1,S2; S1.push(root); int flag=1;//左孩子先入栈,右孩子先出栈 TreeNode* tmp; vector<int> vec; while(!S1.empty() or !S2.empty()){ if(!vec.empty()){ result.push_back(vec); vec.clear(); } if(!S1.empty()){ while(!S1.empty()){ tmp=S1.top(); S1.pop(); vec.push_back(tmp->val); if(flag==1){ if(tmp->left) S2.push(tmp->left); if(tmp->right) S2.push(tmp->right); }else{ if(tmp->right) S2.push(tmp->right); if(tmp->left) S2.push(tmp->left); } } flag=0-flag; } else{ while(!S2.empty()){ tmp=S2.top(); S2.pop(); vec.push_back(tmp->val); if(flag==1){ if(tmp->left) S1.push(tmp->left); if(tmp->right) S1.push(tmp->right); }else{ if(tmp->right) S1.push(tmp->right); if(tmp->left) S1.push(tmp->left); } } flag=0-flag; } } result.push_back(vec); return result; } };
-
链表反序
leetcode206
leetcode92
206题代码如下:执行用时 :12 ms, 在所有 C++ 提交中击败了84.92%的用户
内存消耗 :9.3 MB, 在所有 C++ 提交中击败了9.63%的用户
#include <iostream> #include <vector> using namespace std; struct ListNode{ int val; ListNode *next; ListNode(int x):val(x),next(nullptr){} }; ListNode* reverseList(ListNode* head) { if(head== nullptr or head->next==nullptr) return head; ListNode* tail=null
贝壳找房面试之手撕代码
最新推荐文章于 2024-03-15 18:33:23 发布
本文主要介绍了在贝壳找房面试中常见的算法与数据结构题目,包括二叉树的锯齿形层次遍历、链表反序、二叉树深度优先遍历(递归与非递归)、广度优先遍历、冒泡排序、数组去重、快速排序与TopK问题的解决方案,详细阐述了每种算法的实现思路和代码实现,以及时间复杂度分析。
摘要由CSDN通过智能技术生成