数和二叉树的遍历
(左下一为例)
层次遍历:一层一层遍历 123457
前序遍历:先访问根节点,然后访问左右结点 124537
中序遍历:先访问左节点,然后访问根节点,然后访问右结点 425137
后序遍历:先访问左右结点,再访问根节点 452731
把树转换为二叉树
兄弟节点顺延向下放右边,子结点放左边
构造霍夫曼树
树的路径长度:从根节点到达指定叶子节点的路径长度
计算树的带权(叶子值)路径长度:各个叶子值乘对应路径长度相加的和,树的带权路径长度越小,树最优,即霍夫曼树
图分为有向图,无向图,完全图
完全图就是每个结点互相连接都有方向
然后图的搜索学了dfs,bfs,dp
第一个理解的是dfs,是写了小木棒那道题【POJ2817,木棒,递归 - CSDN App】http://t.csdnimg.cn/QxbNS,当时还不知道这叫dfs,看了好久都不明白为什么用递归模拟,又写了八皇后和迷宫题巩固了一下
bfs感觉自己不会太写队列模拟搜索过程,代码基础不太牢固
dp是最恶心的,跟着教学视频敲了上台阶还有最简单的01背包的题,大概明白了动态规划为什么叫动态规划,但是对每道动态规划题都很难写出状态转移和递推式,有时候题目都没理解写不出来,有时候是题目理解了但是不会用代码表达,还是代码基础不扎实。有时候看题解的时候还有一些引用的函数也没见过,应该要在学一点c转c++的知识
然后还学了一点简单的算法的数学,不过查了查发现细学还要学数论图论等问题,越学越觉得自己脑子有问题。。。
做题还有一个心得是有时候一道题不是只用一个知识,自己有时候连暴力都想不出来更不用说用算法优化了,,这也是要改。。
不过说真的java应该学不来了。。。就我的脑子数据结构算法都难以承受了
剩下的时间就是在玩和睡觉,还画了画(贴点最近的画)
(贴的画比贴的代码都多)
然后每天都会学一点点一点点的语言,学了30天了好像也什么没会多少