假设二叉树中每个结点为单个字符,采用二叉链存储结构存储。设计一个算法把二叉树b的左右进行交换得到新的二叉树,要求不破坏原二叉树
时间: 2023-11-14 18:16:57 浏览: 154
交换二叉树中所有结点的左右子树
5星 · 资源好评率100%
可以使用递归的方法来实现二叉树左右子树交换,具体思路如下:
1. 如果当前二叉树为空,则结束。
2. 否则,交换当前节点的左右子树。
3. 递归交换当前节点的左子树和右子树。
下面是具体的代码实现:
```python
def swap_left_right(root):
if root is None:
return
root.left, root.right = root.right, root.left
swap_left_right(root.left)
swap_left_right(root.right)
```
可以通过以下方式测试代码:
```python
class Node:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
def print_tree(root):
if root is None:
return
print(root.val)
print_tree(root.left)
print_tree(root.right)
root = Node('A', Node('B', Node('D'), Node('E')), Node('C', Node('F'), Node('G')))
print('Original tree:')
print_tree(root)
swap_left_right(root)
print('Swapped tree:')
print_tree(root)
```
输出结果为:
```
Original tree:
A
B
D
E
C
F
G
Swapped tree:
A
C
G
F
B
E
D
```
阅读全文