给定一棵满二叉树先序遍历的结果求该树中序遍历的输出结果代码怎么 写
由于是满二叉树,可以利用完全二叉树的性质,通过先序遍历的结果确定根节点,然后递归地对左右子树进行同样的操作。
具体地,先序遍历的结果可以表示为一个数组,第一个元素就是根节点的值。然后可以根据完全二叉树的性质,找到左子树和右子树的根节点在数组中的位置,进而确定左右子树的范围。然后对左右子树分别进行递归,得到它们的中序遍历结果,最后将它们和根节点的值按照中序遍历的顺序拼接起来即可。
具体实现可以参考以下代码:
def inorder(preorder):
if not preorder:
return []
root = preorder[0]
left_size = (len(preorder) - 1) // 2
left_subtree = inorder(preorder[1:1+left_size])
right_subtree = inorder(preorder[1+left_size:])
return left_subtree + [root] + right_subtree
其中,变量left_size表示左子树的节点个数,注意要使用整除符号//,否则可能会出现小数。然后分别递归左右子树,得到它们的中序遍历结果,最后将它们和根节点的值按照中序遍历的顺序拼接起来即可。
原文地址: https://www.cveoy.top/t/topic/b15s 著作权归作者所有。请勿转载和采集!