首先,要我亲自把数据类型进行调动起来,将代码运营起来,明明之中也对于C语言带有不同感想之类的时间,今天要我从也用不同角度进行分析C语言到低有什么特点以及特色之处到低是什么,此时此刻也带后台运行原理具有什么样方式。
来说说数据结构每个点特点到低有什么方面形式,现在就用我所认识的方式就行书写方式进行调动。
这题让求柱子中间能盛多少水,首先可以肯定两边的两个柱子是不能盛水的,只有两边 之间的柱子有可能会盛水。最简单的一种方式就是使用 3个指针,先找到最高的柱子,用 一个指针t o p指向最高柱子,然后最高柱子左边用两个指针,一个 l e ft,一个 r i g h t(这 里的 l e ft和 r i g h t指向柱子的高度)。
1.如果 l e ft大于 r i g h t,那么肯定是能盛水的,因为 l e ft是小于等于最高柱子t o p的, 并且 r i g h t指向的柱子是在 l e ft和最高柱子t o p之间,根据木桶原理盛水量由最矮的 柱子决定,所以盛水是 l e ft - r i g h t。
2.如 果 l e ft 不 大 于 r i g h t , 是 不 能 盛 水 的 , 这 时 候 我 们 要 让 l e ft 等 于 r i g h t 。 因 为 r i g h t是不能超过最高柱子的,我们增加 l e ft的高度,有利于后面计算的时候盛更多 的水。
三指针求解
这里我们只是计算了左边的盛水量,我们还需要计算右边的盛水量,完整代码如下:
恢复二叉搜索树
给你二叉搜索树的根节点 ro ot,该树中的两个节点的值被错误地交换。请在不改变其 结构的情况下,恢复这棵树。
提示:
树上节点的数目在范围{20,1000};
-2^31<= Node val<=2^31-1
重建二叉树
题中说了把二叉树转化为单链表,这里说的单链表是指二叉树所有节点的左子节点全部 为空。并且这个单链表与二叉树的前序遍历顺序相同。所以最容易想到的一种解决方式 就是通过前序遍历的方式获取二叉树的所有节点,然后在重新构造二叉树。原理很简 单,我们来看下代码
这里每次左右节点连接的时候我们都要先找出左右子节点的最后一个节点,有点麻烦
那么能不能要查找呢,其实有一种方式是可以的,我们知道二叉树的后续遍历顺序是
左子节点-右子节点-当前节点
上面递归我们先遍历是左字节点,当左字节点遍历完的时候,我们已经不记得开之后的最后一个节点,所以需要查找。我们来看一个图。
比如当前节点是1,如果先开节点的右子节点,展开之后让他成为节点5的右子节点,那么节点5展开之后让他成节点4的右子节点。。。 按照这样一个顺序,我们会发现他和二叉树的后续遍历比较相似, 他的遍历顺序就是。
右子节点-左子节点-当前节点
很高兴能够将我所认识知识点行分享出来,所在大家所看之时能够将数据就行统一后期,描述相互进行完成。
以上就是我的分享,新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!