PAT_甲级_1099 Build A Binary Search Tree

2020-11-15
阅读 2 分钟
1.1k
道题和1064的思路是一样的,都是紧紧把握一条,就是利用给定的二叉树的信息获得中序遍历的结点的下标序列,对给定的待插入数字进行排序得到中序遍历的结点的数字序列,然后两者一一对应就可以将该二叉查找树构造出来。这里由于输入的是结点的编号,那么用二叉树的静态存储方法比较方便,使用in数组保存结点中序遍历的编号序列...

PAT_甲级_1102 Invert a Binary Tree

2020-11-12
阅读 2 分钟
1.2k
这个题目有两种方法可以求解,一是按照题目要求直接将二叉树进行反转获得新的二叉树,然后再遍历。第二种就是不改变二叉树,作镜像遍历,也即是之前先遍历左孩子,现在变成先遍历右孩子,毕竟只需要输出遍历的结果,就无需进行二叉树的反转,这里选择用第二种,当然了,如果想要反转的话,直接使用后序遍历的方法,在最后访问根节点...

PAT_甲级_1086 Tree Traversals Again

2020-11-12
阅读 2 分钟
959
首先得说一个结论,就是栈的入栈序列就是一颗二叉树的先序遍历,出栈序列就是一颗二叉树的中序遍历序列,那么这个题目就转化为根据先序和中序求后序遍历序列。那么首先就是根据先序和中序建立二叉树,然后根据这个二叉树进行后序遍历获得后序遍历序列。

PAT_甲级_1020 Tree Traversals

2020-11-12
阅读 3 分钟
1.1k
使用递归建立二叉树,假设递归过程中某步的后序区间是$[beginPost,lastPost]$,中序区间是$[beginIn,lastIn]$,那么根节点为$post[lastPost]$,首先初始化根节点$root$,接着需要在中序遍历中找到根节点的位置$index_root$,然后计算左子树的个数leftTreeLen = index_root-beginIn,这样左子树和右子树在后序和中序遍历中就分...