1.建立二叉树的二叉链表存储结构。 2.实现二叉树的先序、中序和后序三种遍历操作(验证性内容)。 3. 实现二叉树的先序、中序和后序遍历的非递归操作(选则完成其中一种遍历)。
时间: 2024-05-16 21:15:21 浏览: 79
二叉树的基本操作,包括前序、中序、后序遍历的递归和非递归算法
5星 · 资源好评率100%
以下是基于 Python 的二叉树的实现:
1. 二叉树的二叉链表存储结构
```python
class TreeNode:
def __init__(self, value=None):
self.val = value
self.left = None
self.right = None
class BinaryTree:
def __init__(self):
self.root = None
```
2. 先序、中序和后序遍历算法
```python
class BinaryTree:
...
# 先序遍历
def preorder(self, root):
if root:
print(root.val, end=' ')
self.preorder(root.left)
self.preorder(root.right)
# 中序遍历
def inorder(self, root):
if root:
self.inorder(root.left)
print(root.val, end=' ')
self.inorder(root.right)
# 后序遍历
def postorder(self, root):
if root:
self.postorder(root.left)
self.postorder(root.right)
print(root.val, end=' ')
```
3. 先序、中序和后序遍历的非递归实现
```python
class BinaryTree:
...
# 先序遍历
def preorder_iterative(self, root):
stack = []
node = root
while node or stack:
while node:
print(node.val, end=' ')
stack.append(node)
node = node.left
node = stack.pop()
node = node.right
# 中序遍历
def inorder_iterative(self, root):
stack = []
node = root
while node or stack:
while node:
stack.append(node)
node = node.left
node = stack.pop()
print(node.val, end=' ')
node = node.right
# 后序遍历
def postorder_iterative(self, root):
stack1 = []
stack2 = []
node = root
stack1.append(node)
while stack1:
node = stack1.pop()
if node.left:
stack1.append(node.left)
if node.right:
stack1.append(node.right)
stack2.append(node)
while stack2:
print(stack2.pop().val, end=' ')
```
以上是关于二叉树的基本操作的 Python 实现。
阅读全文