二叉树前序ABDGCEF中序DGBAECF,左右子树交换后,后序输出多少
时间: 2023-08-04 10:27:26 浏览: 85
交换左右子树后得到的中序遍历为DGBAECF,前序遍历为AGBDECF。根据二叉树遍历的性质,后序遍历的最后一个节点一定是根节点,因此我们可以通过找到根节点在前序遍历中的位置,将其分为左右子树,并递归处理左右子树的后序遍历。
在前序遍历中找到根节点A,其后面的GBDECF都是其子节点。在中序遍历中,DGBAE是其左子树,CF是其右子树。因此左子树有三个节点,右子树有三个节点,可以递归处理左右子树的后序遍历。
左子树的前序遍历为GBD,中序遍历为DGB,可以得到左子树的后序遍历为GDB。右子树的前序遍历为ECF,中序遍历为ECF,可以得到右子树的后序遍历为FCE。
因此,交换左右子树后得到的二叉树的后序遍历为GDBFCEA。
相关问题
二叉树 前序遍历 中序遍历 后序遍历
二叉树的前序遍历、中序遍历和后序遍历是常见的遍历方式,它们分别按照不同的顺序访问二叉树的节点。下面是它们的介绍和示例:
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) # 访问根节点
```
二叉树前序遍历 中序遍历 后序遍历C
在C语言中,二叉树的三种基本遍历方式包括前序遍历、中序遍历和后序遍历。
1. **前序遍历**: 先访问根节点,再遍历左子树,最后遍历右子树。C代码示例如上面所述。
2. **中序遍历**: 先遍历左子树,然后访问根节点,最后遍历右子树。C代码可以这样实现:
```c
void inorderTraversal(TreeNode* root) {
if (root != NULL) {
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
}
```
3. **后序遍历**: 先遍历左子树,再遍历右子树,最后访问根节点。C代码:
```c
void postorderTraversal(TreeNode* root) {
if (root != NULL) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
}
```
每种遍历方式都对应不同的数据访问顺序,前序遍历适合记录构造过程,中序遍历常用于排序,而后序遍历则适用于计算结果。
阅读全文