数据结构
一笑脸就大!
努力考研ing
展开
-
有一个带头结点的单链表L,设计一个算法使其元素递增有序
先将链表的数据复制到数组中,使用快排将其排好序,然后将数组元素依次插入到链表中,时间复杂度为O(nlogn),空间复杂度为O(n)原创 2021-05-18 19:30:22 · 2345 阅读 · 0 评论 -
设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,设计一个算法求其后序序列post
设有一棵满二叉树(所有结点值均不同),已知其先序序列为pre,设计一个算法求其后序序列post对于一般二叉树,仅根据先序序列或后序序列,并不能确定另一个遍历序列,但对满二叉树,任意一个结点的左、右子树均含有相等的结点数,同时,先序序列的第一个结点作为后序序列的最后一个结点.递归实现,每一次递归的结果就是将先序序列的第一个结点放到后序序列的最后一个结点,直至这个二叉树的递归完成.递归每棵树的左右子树,每一次递归完成都会将该子树的先序第一个结点放到后序的最后一个结点void PreToPost(原创 2021-04-24 22:06:29 · 1439 阅读 · 0 评论 -
设一棵二叉树的结点结构为(LLINK,INFO,RLINK),ROOT为指向该二叉树根结点的指针,p和q分别为指向该二叉树中任意两个结点的指针,编写一个算法ANCESTOR(ROOT,p,q,r),找
设一棵二叉树的结点结构为(LLINK,INFO,RLINK)ROOT为指向该二叉树根结点的指针,p和q分别为指向该二叉树中任意两个结点的指针,编写一个算法ANCESTOR(ROOT,p,q,r),找到p和q的最近公共祖先结点.思路:采用非递归后续遍历算法,因为在访问一个结点p时,栈中结点恰好是p结点的所有祖先,从栈底到栈顶结点再加上p结点,刚好构成从根结点到p结点的一条路径.栈内数据:伪代码:BiTree Ancestor(BiTree ROOT,BiTNode *p,BiTNode *q原创 2021-04-23 21:57:18 · 1811 阅读 · 4 评论 -
二叉树的遍历
二叉树的遍历:二叉树的遍历是指按某条搜索路径访问树中每个结点,使得每个结点均被访问一次,而且仅被访问一次.先序遍历:若二叉树为空,则什么也不做,否则访问跟结点先序遍历左子树先序遍历右子树void PreOrder(BiTree T){ if(T!=NULL){ visit(T);//访问根结点 PreOrder(T->lchild);//递归遍历左子树 PreOrder(T->rchild);//递归遍历右子树原创 2021-04-14 21:04:17 · 138 阅读 · 0 评论