以二叉链表作为二叉树的存储结构,编写以下算法: (1)统计二叉树的叶结点个数。 (2)判断两棵树是否相等。 (3)交换二叉树每个结点的左孩子和右孩子。
时间: 2023-11-15 08:04:31 浏览: 112
题目:编写递归算法,将二叉树中所有结点的左右子树相互交换 - READ.doc
5星 · 资源好评率100%
好的,我来回答您的问题。
(1) 统计二叉树的叶结点个数的算法如下:
```python
def count_leaves(root):
if not root:
return 0
if not root.left and not root.right:
return 1
return count_leaves(root.left) + count_leaves(root.right)
```
(2) 判断两棵树是否相等的算法如下:
```python
def is_same_tree(p, q):
if not p and not q:
return True
if not p or not q:
return False
if p.val != q.val:
return False
return is_same_tree(p.left, q.left) and is_same_tree(p.right, q.right)
```
(3) 交换二叉树每个结点的左孩子和右孩子的算法如下:
```python
def invert_tree(root):
if not root:
return None
root.left, root.right = root.right, root.left
invert_tree(root.left)
invert_tree(root.right)
return root
```
希望能够帮助到您!如果您有其他问题可以继续提问。
阅读全文