树的两种遍历—DFS序列和BFS序列的性质.ppt

给定一颗有标号的树,如何写出它的DFS序列和BFS序列? BFS序列是对有根树进行BFS遍历得到的序列。 DFS序列是对有根树进行DFS遍历得到的序列。 BFS序列为: 4, 3, 5, 1, 2, 8, 7, 6 DFS序列为: 4, 3, 1, 7, 2, 6, 5, 8 如何根据给定的BFS序列和DFS序列构造一颗树? 所谓BFS,就是从根节点开始扩展,深度小的优先。 所谓DFS,就是从根节点开始扩展,深度大的优先。 4 3 1 5 2 6 8 7 为了简化问题,我们假设遍历的一个结点的儿子结点时总是优先选择编号小的进行遍历。 很显然 BFS[1]与DFS[1]都是根结点。 对于某一个结点i, 它的儿子有可能是它在BFS序列中的后几个点。并且由于优先选择编号小的进行遍历所以应该是上升的几个点,假设它们的编号是P1, P2, P3… 则P1 P2 P3 …, 因为DFS的规律是遍历完一棵子树再到下一棵,所以它们在DFS序列中也是由大到小出现, 只是可能中间隔了几个结点罢了。 根据这两个性质, 我们可以确定结点i在树中的儿子。 拿题目数据做例子。 首先4的儿子应该是按由小到大出现在BFS序列中的。后面35,但是51,所以1就肯定不是4的儿子。然而即使后面若干个数满足升序的条件,也不一定全都是4的儿子,这时我们就要借助DFS序列,因为4的儿子在DFS序列中也是按由小到大

文档评论(0)

1亿VIP精品文档

相关文档