考研数据结构
考研数据结构习题和示例的的代码实现。
「已注销」
一个臭打游戏的程序
展开
-
寻找二叉树中两个节点的最近公共祖先节点
非递归寻找两个节点的最近公共祖先节点上一篇博文给出了寻找一个结点的所有祖先节点,那么求两个节点的最近公共祖先就很容易了,首先后序遍历找到两个节点各自的祖先列表,都存在了栈中,越靠近栈顶的元素就离对应节点越近,所以只需要将两个栈元素出栈知道栈顶元素第一次相等就可以找到最近公共祖先了。#include <iostream>#include <stack>using n...原创 2020-04-05 23:37:27 · 463 阅读 · 0 评论 -
二叉树寻找节点祖先-非递归
寻找节点祖先-非递归题目要求找出值为x的节点的所有祖先(值为x的节点不超过一个),寻找过程就是一种后序遍历的过程,当找到值为x的节点那么栈中的元素都为该节点的祖先,输出即可。#include <iostream>#include <stack>using namespace std;struct Node{ int data; int tag...原创 2020-04-05 22:52:34 · 1199 阅读 · 0 评论 -
中缀表达式转后缀思路
中缀表达式转后缀思路要求在转化的时候知道栈中操作符的情况在做王道数据结构的时候,有两道真题都考察了中缀表达式转后缀表达式过程中,要求得到当前操作符栈中储存的操作符元素信息(比如栈中最大储存的操作符个数,当扫描到某个数值的时候栈用操作符序列是什么。。。)解题思路:1.扫描中缀表达式;2.遇到数直接输出;3.遇到操作符和栈顶作符元素比较操优先级;4.如果栈空或者栈顶元素为“(”直接入栈;...原创 2020-04-03 22:25:53 · 209 阅读 · 0 评论 -
王道数据结构线性表课后试题(二)
王道数据结构线性表课后试题(二)链表节点:struct Node{ int data; Node *next;};Q1:设计递归算法,删除不带头结点的单链表中值为X的节点void DeleteValueX(Node* &l,int x){ Node *p; if(l==nullptr) return; if(l->...原创 2020-04-03 22:22:15 · 289 阅读 · 0 评论 -
链表实现
链表操作(单双、循环、静态链表)以下c++代码都已经在CodeBlock成功运行一、单链表//单链表操作 不难但还是自己实现一边#include <iostream>using namespace std;struct Node{ int data; Node *next;};Node *List_HeadInsert(Node *head){...原创 2020-04-03 22:21:34 · 111 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历说一下四个非递归遍历的思路。先序的非递归遍历最好理解,先将根节点节点入栈,进入循环,将栈顶元素出栈,输出节点数据,然后将出栈节点右孩子入栈,再压入左孩子,这样的顺序入站之后栈顶节点就是上一个节点的左孩子。重复这个过程直到栈空遍历完成。中序的非递归遍利用一个栈保存上一个节点,首先左子树一路走到底,遇到叶子节点之后栈顶元素弹出,然后将将弹出的节点的右子树入栈。后序遍历用了两个栈,我...原创 2020-04-03 22:19:46 · 198 阅读 · 0 评论