数据结构
408数据结构复习
Blocking The Sky
这个作者很懒,什么都没留下…
展开
-
排序算法汇总
一、插入排序 1、直接插入排序 时间复杂度:O(n^2),稳定 代码: void direct_insert_sort(vector<int>& nums){ int i,j; for(i=1;i<nums.size();i++){ int temp=nums[i]; for(j=i-1;j>=0&&nums[j]>temp;j--){//将前面比他大的元素后移一位原创 2021-09-25 23:09:06 · 52 阅读 · 0 评论 -
判断是否是平衡二叉树
class Solution { public: int height(TreeNode* root){//求当前结点高度 if(root==NULL){ return 0; } else return max(height(root->left),height(root->right))+1; } bool isBalanced(TreeNode* root) {原创 2021-09-20 23:53:13 · 77 阅读 · 0 评论 -
输出有向无环图的所有路径
class Solution { public: void findpath(vector<vector<int>>& graph,int start,int end,vector<int>& path,vector<vector<int>>& allpath){ path.push_back(start); if(start==end){ allpath.pu原创 2021-09-20 22:25:00 · 703 阅读 · 0 评论 -
输出从顶点Vi到Vj的所有简单路径
class Solution { public: bool visited[20]; void init(){ for(int i=0;i<20;i++) visited[i]=false; } int firstarc(vector<vector<int>>& graph,int v){//返回v相邻的第一个结点 int p=-1; if(graph[v].size原创 2021-09-20 21:59:23 · 1519 阅读 · 0 评论 -
LeetCode 617. 合并二叉树
class Solution { public: TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) { if(root1==NULL&&root2==NULL) return NULL; else if(root1==NULL) return root2; else if(root2==NULL) retu原创 2021-09-19 22:05:30 · 71 阅读 · 0 评论 -
二叉树自下往上层次遍历
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层序遍历为: [ [15,7], [9,20], [3] ] /** * Definition for a binary tree node. * struct TreeNode { * int val;原创 2021-09-19 20:55:23 · 472 阅读 · 0 评论 -
LeetCode 101. 对称二叉树
class Solution { public: bool equal(TreeNode* left,TreeNode* right){ if(left==NULL&&right==NULL) return true; else if(left==NULL||right==NULL) return false; return (equal(left->left,right->r原创 2021-09-19 01:40:07 · 85 阅读 · 0 评论 -
LeetCode 100. 相同的树
class Solution { public: bool isSameTree(TreeNode* p, TreeNode* q) { if(p==NULL&&q==NULL)//到空节点返回true return true; else if(p==NULL||q==NULL)//两个不同时为空返回则不相同 return false; else { if(isSa原创 2021-09-19 01:14:00 · 84 阅读 · 0 评论 -
二叉树的层次遍历
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { TreeNode* p; vector<vector<int>> result; if(root==NULL) return result; queue<TreeNode*> q; q.pus原创 2021-09-19 00:53:28 · 77 阅读 · 0 评论 -
二叉树后序遍历
堆栈非递归实现 class Solution { public: vector<int> result; vector<int> postorderTraversal(TreeNode* root) { stack<TreeNode*> s; TreeNode *p; p=NULL; while(root||!s.empty()){ if(root){原创 2021-09-19 00:44:02 · 71 阅读 · 0 评论 -
二叉树中序遍历
堆栈非递归实现 class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { TreeNode* p; vector<vector<int>> result; if(root==NULL) return result; queue<TreeNode*> q;原创 2021-09-19 00:14:40 · 70 阅读 · 0 评论 -
二叉树先序遍历
非递归堆栈实现 class Solution { public: vector<int> result; vector<int> preorderTraversal(TreeNode* root) { stack<TreeNode*> s; //根左右先序遍历 while(root||!s.empty()){ if(root){ result.push_原创 2021-09-18 23:39:03 · 63 阅读 · 0 评论