算法-数据结构 关于算法-数据结构:PAT甲级1043-Is-It-a-Binary-Search-Tree 咱们首先通过给定的N个结点间接构建一个二叉查找树,而后再取得其先序遍历序列和镜像先序遍历序列,别离判断是否和输出的序列相等,如果输出的序列是先序遍历序列,那么就输入YES并取得其后序遍历序列进行输入,如果输出序列是镜像先序遍历序列,那么就输入YES并取得镜像后序遍历序列进行输入,如果都不是,就输入NO。
算法-数据结构 关于算法-数据结构:PAT甲级1053-Path-of-Equal-Weight 给定一颗树和每个结点的权值,求从所有根结点到叶子结点的门路,使得每条门路上的权值之和等于给定的常数S.如果有多条门路,依照门路的非递增序列输入
算法-数据结构 关于算法-数据结构:PAT甲级1004-Counting-Leaves 间接遍历这颗树,在遇到叶子节点的时候,就统计以后档次下的叶子节点的个数,这里应用num_leaves_per_level保留每一层叶子节点的数目。遍历完结后,间接输入num_leaves_per_level数组即可。层序遍历代码如下:
算法-数据结构 关于算法-数据结构:PAT甲级1106-Lowest-Price-in-Supply-Chain 给出一颗销售供给树,根结点为0,在树根处售价为P,而后从根节点开始每往子节点走一层就,该层的货物的价格就会在上一层的价格上减少r%,要求取得叶子结点最低售价以及最低售价的个数。
算法-数据结构 关于算法-数据结构:PAT甲级1094-The-Largest-Generation 此题也是考查树的遍历,能够应用先序遍历或者层序遍历建设每一层和节点个数的关系,这里采纳了层序遍历,间接在出队节点的时候就先更新以后层的节点个数,而后更新最多节点数目和层数。对应代码如下:
算法-数据结构 关于算法-数据结构:PAT甲级1090-Highest-Price-in-Supply-Chain 给出一颗销售供给树,根结点为0,在树根处售价为P,而后从根节点开始,每一层的货物的价格就会在上一层的价格上减少r%,要求输入售价最高的零售商和其个数。
算法-数据结构 关于算法-数据结构:PAT甲级1079-Total-Sales-of-Supply-Chain 给出一颗销售供给树,根结点为0,在树根处售价为P,而后从根节点开始,每一层的货物的价格就会在上一层的价格上减少r%,给出每个叶结点的货物量,要求计算所有叶结点的销售总额。
算法-数据结构 关于算法-数据结构:PAT甲级1102-Invert-a-Binary-Tree 这个题目有两种办法能够求解,一是依照题目要求间接将二叉树进行反转取得新的二叉树,而后再遍历。第二种就是不扭转二叉树,作镜像遍历,也即是之前先遍历左孩子,当初变成先遍历右孩子,毕竟只须要输入遍历的后果,就无需进行二叉树的反转,这里抉择用第二种,当然了,如果想要反转的话,间接应用后序遍历的办法,在最初拜访根节点…
算法-数据结构 关于算法-数据结构:PAT甲级1086-Tree-Traversals-Again 首先得说一个论断,就是栈的入栈序列就是一颗二叉树的先序遍历,出栈序列就是一颗二叉树的中序遍历序列,那么这个题目就转化为依据先序和中序求后序遍历序列。那么首先就是依据先序和中序建设二叉树,而后依据这个二叉树进行后序遍历取得后序遍历序列。
算法-数据结构 关于算法-数据结构:PAT甲级1020-Tree-Traversals 应用递归建设二叉树,假如递归过程中某步的后序区间是$[beginPost,lastPost]$,中序区间是$[beginIn,lastIn]$,那么根节点为$post[lastPost]$,首先初始化根节点$root$,接着须要在中序遍历中找到根节点的地位$index_root$,而后计算左子树的个数leftTreeLen = index_root-beginIn,这样左子树和右子树在后序和中序遍历中就分…