利用二叉树创建、遍历算法,编写程序,创建一颗二叉树,实现对二叉树的先序遍历、中序遍历和后序遍历的思路
时间: 2024-01-23 10:12:54 浏览: 85
以下是利用二叉树创建、遍历算法,实现对二叉树的先序遍历、中序遍历和后序遍历的思路:
1. 创建二叉树
首先,我们需要定义二叉树的节点类,包含节点值、左子节点和右子节点。然后,我们可以通过递归的方式创建二叉树,具体步骤如下:
- 如果当前节点为空,创建一个新节点并返回。
- 如果当前节点不为空,比较当前节点值和插入值的大小关系,如果插入值小于当前节点值,则递归插入到左子树中,否则递归插入到右子树中。
2. 先序遍历
先序遍历的顺序是先遍历根节点,然后遍历左子树,最后遍历右子树。具体步骤如下:
- 如果当前节点为空,返回。
- 遍历当前节点。
- 递归遍历左子树。
- 递归遍历右子树。
3. 中序遍历
中序遍历的顺序是先遍历左子树,然后遍历根节点,最后遍历右子树。具体步骤如下:
- 如果当前节点为空,返回。
- 递归遍历左子树。
- 遍历当前节点。
- 递归遍历右子树。
4. 后序遍历
后序遍历的顺序是先遍历左子树,然后遍历右子树,最后遍历根节点。具体步骤如下:
- 如果当前节点为空,返回。
- 递归遍历左子树。
- 递归遍历右子树。
- 遍历当前节点。
<<引用>>中已经给出了PHP的实现,这里给出Python的实现:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def insert(root, val):
if not root:
return TreeNode(val)
if val < root.val:
root.left = insert(root.left, val)
else:
root.right = insert(root.right, val)
return root
def preorder(root):
if not root:
return
print(root.val)
preorder(root.left)
preorder(root.right)
def inorder(root):
if not root:
return
inorder(root.left)
print(root.val)
inorder(root.right)
def postorder(root):
if not root:
return
postorder(root.left)
postorder(root.right)
print(root.val)
# 创建二叉树
root = None
root = insert(root, 5)
root = insert(root, 3)
root = insert(root, 7)
root = insert(root, 1)
root = insert(root, 9)
# 先序遍历
print("先序遍历:")
preorder(root)
# 中序遍历
print("中序遍历:")
inorder(root)
# 后序遍历
print("后序遍历:")
postorder(root)
```
阅读全文