北大数据结构与算法实习报告.docVIP

  • 9
  • 0
  • 约3.54千字
  • 约 4页
  • 2022-09-25 发布于湖北
  • 举报
实习报告 这个题目就是要根据一个中序遍历和一个构树的规则构造一棵BST,我采用的算法是o(nlogn) + o(n)的算法, 其中o(nlogn)是指将label按照从小到大的顺序排列, 我用到了库函数的快速排序。而o(n)是指将结点构造成一个BST。下面的内容分为两个方面, 一是构造二叉树的算法分析, 二是代码的优化。 一 、o(n)的建树方法 首先确定我们从题目中知道的信息,即二叉树结点的个数, 以及每个结点的描述, 题目要求我们建立一棵BST, 其中BST又满足heap的性质, 即父亲结点的priority必须大于它的子结点的priority值, 输出按照二叉树的中序遍历形式。 显然这道题不可能用我们常规的建树方法, 即建BST或heap的常规方法,由于结点有50000,所以我们建树的算法必须为o(nlogn) 或者o(n)。 首先我们将结点按照label排序, 这样排好序的序列就是我们要构造的BST的中序遍历。然后我们根据中序遍历建树。从中序遍历中的第一个结点到最后一个结点, 逐一加入我们构造的树中,第一个结点可以独立构成一棵满足条件的树。按照中序遍历的定义,第二个结点可以是第一个结点的父亲结点(其左儿子为第一个结点) 或者是第一个结点的右儿子, 然后又可以根据两个结点的priority确定到底是放在那里。加入第三个结点也是这样操作的, 首先根据中序遍历的定义确定它可

文档评论(0)

1亿VIP精品文档

相关文档