建立一棵二叉树,设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法交换该二叉树的左右孩子。的代码
时间: 2024-05-11 10:02:28 浏览: 121
好的,我来给您写一下。代码如下:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def swapLeftRight(root):
if not root:
return
root.left, root.right = root.right, root.left
swapLeftRight(root.left)
swapLeftRight(root.right)
# 测试样例
root = TreeNode('a')
root.left = TreeNode('b')
root.right = TreeNode('c')
root.left.left = TreeNode('d')
root.left.right = TreeNode('e')
root.right.left = TreeNode('f')
print("交换前的二叉树:")
print(root.left.val, root.right.val)
print(root.left.left.val, root.left.right.val, root.right.left.val)
swapLeftRight(root)
print("交换后的二叉树:")
print(root.left.val, root.right.val)
print(root.left.left.val, root.left.right.val, root.right.left.val)
```
这段代码中,我们首先定义了一个 `TreeNode` 类,表示二叉树的结点。然后,我们定义了一个 `swapLeftRight` 函数,用于交换二叉树的左右孩子。这个函数的实现非常简单,我们首先判断当前结点是否为空,如果为空则直接返回。否则,我们交换当前结点的左右孩子,然后递归调用 `swapLeftRight` 函数交换当前结点的左右子树。
最后,我们使用一个测试例子来验证 `swapLeftRight` 函数的正确性。在这个测试例子中,我们构建了一棵二叉树,然后调用 `swapLeftRight` 函数交换了该二叉树的左右孩子。最后,我们输出交换前后二叉树的结构,以验证函数的正确性。
阅读全文