线性回归(boston房价预测)
(1)数据预处理
1 | data = pd.read_csv("data.txt", delim_whitespace=True, names=['CRIM', 'ZN', 'INDUS','CHAS',' NOX','RM','AGE',' DIS',' RAD',' TAX','PTRATIO','B','LSTAT','MEDV']) |
1 | data = pd.read_csv("data.txt", delim_whitespace=True, names=['CRIM', 'ZN', 'INDUS','CHAS',' NOX','RM','AGE',' DIS',' RAD',' TAX','PTRATIO','B','LSTAT','MEDV']) |
Binary tree calculator也就是使用二叉树实现计算器的功能,相信大家以前都使用栈实现过计算器功的能,使用两个栈分别存数字与字符,一边计算一边“pop”、“push”,或是先将输入的中缀表达式转为后缀表达式,之后运算。而我们的Binary tree calculator则也需要用到栈,先将中缀表达式转为后缀表达式,之后使用指针栈构建Expression tree,再利用二叉树节点之间的关系递推遍历计算即可。
那么怎么才能将中缀表达式转为后缀表达式呢?我们来看下面一个例子。
a+b*(c-d)/e
上述则为一个中缀表达式,它的后缀表达式如下:
abcd-*e/+
我们利用栈来实现这个过程:
(1)若遇到数字直接输出。
(2)若遇到字符(‘+’、’-‘、’*’、’/‘),对比栈顶元素的优先级,如果比栈顶元素优先级高,则直接入栈,否则将栈中元素不断出栈,直到出现优先级比存入字符低,则将字符入栈。
(3)若字符为’(‘,则直接入栈,若遇到‘)’,则将‘(’前的元素弹出。
(4)若扫描完成后栈中还有元素滞留,则将栈中元素全部弹出。
大家在存储多组数据时,会选用数组,但在数组中间删减或是增加数据时,需要将整个数组往前后“平移”。
增加:
1 | void Add(int value, int index, int size) |
删减:
1 | void Delete(int v, int size) |
这样的时间复杂度会很高,也十分麻烦,需要遍历一遍才能完成操作,而链表可以之前在中间插入、删除。
1 | #include<iostream> |
Update your browser to view this website correctly. Update my browser now