摘要: 题目 分析 代码 1 class Solution { 2 public: 3 void dfs(TreeNode* root,vector<int>&res){ 4 if(root == NULL) return; 5 6 dfs(root->left,res); 7 res.push_back( 阅读全文
posted @ 2021-02-22 21:37 Uitachi 阅读(36) 评论(0) 推荐(0)
摘要: 题目 分析 后序遍历的非递归写法基本上就是按照前序遍历的非递归写出来的。前序遍历:根左右,后序遍历:左右根。如果把前序遍历的结果反转:得到根右左。这就启发我们,前序遍历的非递归代码基本不变,只需要将右孩子先入栈改为左孩子先入栈即可。这样得到的遍历顺序是:根右左。最后反转得到左右根 代码(递归) 1 阅读全文
posted @ 2021-02-22 21:34 Uitachi 阅读(54) 评论(0) 推荐(0)
摘要: 题目 分析 用栈来模拟前序遍历,注意右孩子先进左孩子后进,这样出栈顺序就是先左后右! 代码(递归) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode 阅读全文
posted @ 2021-02-22 21:30 Uitachi 阅读(49) 评论(0) 推荐(0)
摘要: 题目 分析 最短路,权值相同,用BFS 代码 1 #include<iostream> 2 #include<algorithm> 3 #include<queue> 4 #include<cstring> 5 using namespace std; 6 7 const int N = 110; 阅读全文
posted @ 2021-02-22 16:31 Uitachi 阅读(71) 评论(0) 推荐(0)
摘要: 题目 分析一 本问题可以按照全排列的dfs来写。生成一个排列数,下标 i 对应第 i 行,其上的数字代表放哪一列。 代码 1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int N = 20;//这里 阅读全文
posted @ 2021-02-22 11:11 Uitachi 阅读(93) 评论(0) 推荐(0)
摘要: 题目 分析 代码 1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 const int N = 7; 5 6 bool st[N]; 7 int path[N]; 8 9 void dfs(int n,int u) 阅读全文
posted @ 2021-02-22 10:09 Uitachi 阅读(61) 评论(0) 推荐(0)