如何用if name="main"输出按先序遍历的顺序建立二叉链表,编写算法交换该二叉树的左右孩子
时间: 2024-02-05 11:13:55 浏览: 70
交换二叉树的左右孩子
可以使用以下代码实现:
```python
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def buildTree(preorder, inorder):
if not preorder or not inorder:
return None
root_val = preorder.pop(0)
root = Node(root_val)
index = inorder.index(root_val)
root.left = buildTree(preorder, inorder[:index])
root.right = buildTree(preorder, inorder[index+1:])
return root
def swapTree(root):
if not root:
return None
root.left, root.right = root.right, root.left
swapTree(root.left)
swapTree(root.right)
return root
if __name__ == "__main__":
preorder = [1, 2, 4, 5, 3, 6, 7]
inorder = [4, 2, 5, 1, 6, 3, 7]
root = buildTree(preorder, inorder)
new_root = swapTree(root)
# 输出交换后的二叉树按先序遍历的顺序
def printTree(root):
if root:
print(root.val, end=' ')
printTree(root.left)
printTree(root.right)
printTree(new_root)
```
其中,`buildTree()`函数用于按照先序遍历和中序遍历的结果构建二叉树,`swapTree()`函数用于交换二叉树的左右孩子,最后在`if __name__ == "__main__":`中调用这两个函数并输出交换后的二叉树按先序遍历的顺序。
阅读全文