- 博客(12)
- 收藏
- 关注
原创 A+B with Binary Search Tree(pta)
第二种方法(正确的)思路:先对root2左根右遍历得到升序序列并存在数组B里,遍历完后B的下标ib正好在最后一个元素的位置,再对root1左根右升序遍历,同时对每一个结点的值T->val,先和a[ia]比较是否相等,再和B[ib]比较,如果二者的和大于target就ib--,B向前走,直到等于或者小于时即可跳出,若等于还要存储在a里。缺点:时间复杂度接机N^2,对于重复结点的判断没有必要专门遍历一遍a,完全可以直接和a[i-1]去比,因为按照升序序列遍历,相同的两个节点本身就连在一起。
2024-04-12 13:14:42 900
原创 Height of BST(pta)(数组模拟二叉树)
第一种思路:先序遍历根左右,我创建一个数组T,来存放BST,create函数实现一边建树一边计算高度,建树,先for循环找出比当前根大的第一个结点的下标作为ir,即右子树在preorder的起点,create的四个参数分别是:T-创建的BST,preorder-当前处理的子树的起点数组,n-当前处理子树的元素个数,ic-当前处理子树的根在T中存放的位置下标。但是算法走向差不多。第二种思路和第一种差不多,免去了创建T的过程,相对简单一点,也不用计算左右子树在T中的位置,还是顺着创建树的思路在走。
2024-04-09 15:16:30 190
原创 IsCBST(pta)
题目是英文,大概就是先把输入的数组变成二叉搜索树树,再判断是否是完全二叉树,并且把先序遍历的结果存在A里。这道题没有给树结构体所以用数组做,存储有点像堆,区别是这个。
2024-04-08 22:11:27 119
原创 二叉搜索树中的公共祖先pta
其中Tree的定义如下:Tree Left;Tree Right;函数LCA须返回树T中两个结点u和v的最近公共祖先结点的键值。若u或v不在树中,则应返回ERROR。
2024-04-07 22:11:34 278
原创 是否二叉搜索树pta
其中BinTree结构定义如下:函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:定义:一个二叉搜索树是一棵二叉树,它可以为空。非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。如果T是二叉搜索树,则函数返回true,否则返回false。
2024-04-07 21:57:56 258
原创 单链表的分段逆转pta(超级简单简洁)
题目在最后面,先说思路,创建一个p和pre指向L的后一个结点(p是每次都先后走,便于a记录数据,而pre是每一小段的起点,集齐K个后,以pre为起点开始放数据),一个数组a用来记录当前一段的所有数据,每次先把p的数据放入a里面,然后i++;在后面判断i是否等于K,也就是是否集齐K个,及其即可逆转,若满足则将a中元素从i-1到0一个个放入pre->Data中,完成当前一段的逆转,这段代码巧妙在如果最后一段不满足K个,就不会逆转,省去了判断,超级简洁,测试点一把过。
2024-04-01 19:25:08 192
原创 二叉树的所有路径 sprintf函数 递归
通过这道题的引用,学习sprintf函数,以及DFS,巧妙地使用一个countpath数组(这里注意是整型,所有后面用了sprintf函数来存入元素)记录了每一条路,虽然每一次调用时该数组的名称是一样的,但是每条不同路径里(也就是T->left或者T->right)countpath都不一样,再在遇到叶子结点是,动态分配一块空间char类型的stor来从count path中读出该条路径的元素。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。
2024-03-31 22:33:13 175 1
原创 1382.将二叉搜索树变平衡
思路:先用中序遍历一遍,由于二叉搜索树的特殊性,左根右得到的便是一个升序数组,所以不用排序即可直接递归加二分查找来创建树。这个递归记录二叉树结点的方法很nice,用一个记录数组下标的量int* pos,记录到数组int arr[]里,中值arr[mid]作为每一次的根。的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。这不是唯一的正确答案,[3,1,4,null,2,null,null] 也是一个可行的构造方案。对比我的版本,我的是创建了一个完全二叉平衡搜索树。你一棵二叉搜索树,请你返回一棵。
2024-03-29 19:59:17 247
原创 树的同构(pta)
题目直接看陈越老师的视频p39;或者pta树的最后一题;实现:树由结构数组实现,一个结点里放了数据和左右结点的数组下标(left和right);
2024-03-27 23:03:03 163
原创 pta小孩报数(顺序循环队列)引发的对于指针和分配了空间的指针的思考(有该题答案两种)
(总之代码实现并不难,只是这两段代码让我思考了指针和分配了空间的指针使用上的区别,即代码一时分配了空间的指针,而二则只是纯用来指向空间的指针)分割线-------------------分割线------------------------分割线--------------------------分割线---------------分割线。//出队,返回出队元素e,且成功出队返回true,否则返回false;//出队,返回出队元素e,且成功出队返回true,否则返回false;否则返回false;
2024-03-19 14:33:28 344
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人