二叉树结点的计算

来源:互联网 发布:河南农业大学教务网络 编辑:程序博客网 时间:2024/04/29 09:07
某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则后序遍历的结点访问顺序是(gdbehfca)
首先我们知道,前序遍历的规则是:根结点→左子结点→右子结点中序遍历是:左子结点→根结点→右子结点后序遍历是:左子结点→右子结点→根结点那么,对于一棵二叉树,前序遍历的第一个结点一定是这棵树的根结点,即根结点是a。在中序遍历的顺序dgbaechf中,以a分成左、右两边,左边是dgb,右边是echf。所以,这棵树现在可以确定如下:      a     / /dgb echf接下来再分别对左子树和右子树进行类似的操作。对于左子树dgb来说,在前序遍历abdgcefh中找到bdg,证明这子树的根是b,那么现在可以确定的树结构如下:    a   / /  b  echf /dg再看dg,前序遍历中的顺序为dg,所以d是dg这部分子树的根,那么又因为中序遍历的dg顺序也是dg,所以g是右子结点。即:    a   / /  b  echf /d / g现在看echf这部分子树,前序中顺序是cefh,所以子树根结点是c,那么左子结点是e,右子树是hf:得到:    a   / /  b  c /   / /d  e hf / g最后只剩下hf部分了,前序遍历中是fh,所以根是f,那么h就是左子结点。现在得到了整棵树:    a   / /  b  c /   / /d  e  f /    / g  h对这棵树再进行后序遍历就行了,结果就是:gdbehfca
原创粉丝点击