建立一颗二叉树,所有值均为整数(采用二叉链表存储方式),输出改二叉树的前序,中序,后序遍历序列,把所有节点的值修改为绝对值
时间: 2024-12-21 19:29:15 浏览: 8
C++二叉树实验
建立一棵二叉树并存储整数值,通常会通过递归的方式创建节点,并利用二叉链表连接左右孩子。以下是二叉树的基本结构:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
```
对于给定的二叉树,我们可以分别进行前序、中序和后序遍历。遍历的过程可以使用递归或者栈来实现。
**前序遍历(根-左-右)**:
1. 访问当前节点
2. 遍历左子树
3. 遍历右子树
**中序遍历(左-根-右)**:
1. 遍历左子树
2. 访问当前节点
3. 遍历右子树
**后序遍历(左-右-根)**:
1. 遍历左子树
2. 遍历右子树
3. 访问当前节点
对于将所有节点的值修改为绝对值,可以在遍历时直接更新节点的`val`属性:
```python
def absolute_tree_preorder(root):
if root is not None:
root.val = abs(root.val)
absolute_tree_preorder(root.left)
absolute_tree_preorder(root.right)
# 分别对前序、中序和后序遍历做同样的操作
```
为了输出遍历序列,你需要另外编写函数分别处理这三个过程,并返回结果。以下是部分代码示例:
```python
def preorder_traversal(root):
result = []
if root is not None:
result.append(root.val)
result += preorder_traversal(root.left)
result += preorder_traversal(root.right)
return result
def inorder_traversal(root):
# ... 同样的实现 ...
def postorder_traversal(root):
# ... 同样的实现 ...
```
阅读全文