数据结构 LintCode
dfgd41233
这个作者很懒,什么都没留下…
展开
-
LintCode 有效的括号序列
知道原理,不会写代码。c++容器没有学,vectorstack; stack.push_back(’ ‘); 不会调用这几个函数,所以代码看解答写出来的。 bool isValidParentheses(string &s) { // write your code here vector<char>stack; stack...原创 2018-03-08 21:27:16 · 183 阅读 · 0 评论 -
LintCode 将表达式转换为逆波兰式
看懂将表达式转换为逆波兰式的原理,写不好程序。 我是看大话数据结构,转换规则是:遍历中,若是数字,则输出,成为逆波兰表达式;若是符号,则与栈顶符号比优先级。 解答精髓在于将(),+-,*/,数字分级,级别递增,从左到右遍历表达式,将每一个字符变量与栈顶变量作比较,级别高的出栈1,进入栈2。(栈1:比较优先级 栈2:逆波兰表达式) int getLevel(string obj) ...原创 2018-03-09 15:54:53 · 285 阅读 · 0 评论 -
LintCode 逆波兰式求值
逆波兰表达式求值思路:从左到右遍历表达式,遇见数字则进栈,遇见字符则弹出栈顶的两数字计算,计算结果进栈。 int lev(string s) { if(s=="+") return 0; else if(s=="-") return 1; else if(s=="*") ...原创 2018-03-09 15:57:25 · 154 阅读 · 0 评论 -
LinCode 二叉树的前中后遍历
二叉树的前中后序遍历,前序遍历,根左右;中序遍历,左根右;后续遍历,左右根。非递归 二叉树的前序遍历 方法1,这个完全是我自己想的。在做完用队列实现二叉树的层次遍历后,按照这个思路,写了这个算法。 1,判断是否空树,如果是,则返回空;如果不是,则根入栈 2,栈不是空的,进入循环。新建一个树结点,把根赋给它,根出栈,对根处理;然后判断根是否有右子树,如果有则进栈;同理,判断是否有左子树,...原创 2018-03-11 09:37:16 · 303 阅读 · 0 评论 -
LintCode 二叉树的层次遍历
二叉树的层次遍历,一层层从上往下遍历;前中后序遍历是深度遍历,使用栈,按倒序;层次遍历是广度遍历,使用队列,按顺序; vector<vector<int>> levelOrder(TreeNode * root) { // write your code here queue<TreeNode *> queue; ...原创 2018-03-11 09:41:01 · 123 阅读 · 0 评论