前序遍历、中序遍历、后序遍历
时间: 2023-11-29 17:44:58 浏览: 228
前序遍历、中序遍历、后序遍历是二叉树遍历的三种方式,它们分别按照不同的顺序遍历二叉树的节点。具体介绍如下:
1. 前序遍历(preorder traversal):先访问根节点,然后递归地访问左子树和右子树。即根节点->左子树->右子树。
2. 中序遍历(inorder traversal):先递归地访问左子树,然后访问根节点,最后递归地访问右子树。即左子树->根节点->右子树。
3. 后序遍历(postorder traversal):先递归地访问左子树和右子树,最后访问根节点。即左子树->右子树->根节点。
下面是一个二叉树的例子,以及对应的前序遍历、中序遍历、后序遍历结果:
```
1
/ \
2 3
/ \ \
4 5 6
前序遍历:1 2 4 5 3 6
中序遍历:4 2 5 1 3 6
后序遍历:4 5 2 6 3 1
```
相关问题
前序遍历中序遍历后序遍历
在二叉树的遍历中,前序遍历(preorder traversal)是指先访问根节点,然后按照左子树和右子树的顺序进行遍历。中序遍历(inorder traversal)是指先按照左子树的顺序进行遍历,然后再访问根节点,最后按照右子树的顺序进行遍历。后序遍历(postorder traversal)是指先按照左子树和右子树的顺序进行遍历,最后再访问根节点。
例如,对于一个二叉树,节点的数据分别为A、B、C、D、E,根据前序遍历(A -> B -> D -> E -> C)、中序遍历(D -> B -> E -> A -> C)和后序遍历(D -> E -> B -> C -> A),可以得到不同的遍历结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [前序遍历 (preorder traversal) - 中序遍历 (inorder traversal) - 后序遍历 (postorder traversal)](https://blog.csdn.net/chengyq116/article/details/105080920)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* [前序、中序、后序遍历的基础详解](https://blog.csdn.net/m0_57330725/article/details/121560292)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
二叉树 前序遍历 中序遍历 后序遍历
二叉树的前序遍历、中序遍历和后序遍历是常见的遍历方式,它们分别按照不同的顺序访问二叉树的节点。下面是它们的介绍和示例:
1. 前序遍历(Preorder Traversal):先访问根节点,然后递归地前序遍历左子树,最后递归地前序遍历右子树。
示例代码:
```python
def preorder_traversal(root):
if root is None:
return
print(root.val) # 访问根节点
preorder_traversal(root.left) # 前序遍历左子树
preorder_traversal(root.right) # 前序遍历右子树
```
2. 中序遍历(Inorder Traversal):先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树。
示例代码:
```python
def inorder_traversal(root):
if root is None:
return
inorder_traversal(root.left) # 中序遍历左子树
print(root.val) # 访问根节点
inorder_traversal(root.right) # 中序遍历右子树
```
3. 后序遍历(Postorder Traversal):先递归地后序遍历左子树,然后递归地后序遍历右子树,最后访问根节点。
示例代码:
```python
def postorder_traversal(root):
if root is None:
return
postorder_traversal(root.left) # 后序遍历左子树
postorder_traversal(root.right) # 后序遍历右子树
print(root.val) # 访问根节点
```
阅读全文