6-1 二叉树的遍历 (25 分
时间: 2024-05-25 22:15:51 浏览: 35
)对于一棵二叉树,请设计一个算法,输出其中序遍历。
输入格式:
输入第一行给出一个正整数$N$ ($\leqslant 10^3$),是二叉树的结点数。下面$N$行给出每个结点的信息,格式为
$Data Left Right$
其中$Data$是结点的编号(由0~$N-1$编号),$Left$和$Right$分别是左、右子结点的编号。如果不存在左(右)子结点,则将$Left$($Right$)设为$-1$。
输出格式:
在一行中输出该树的中序遍历序列,数字间以1个空格分隔,行末不得有多余空格。
输入样例:
5
1 2 3
2 4 -1
3 -1 5
4 -1 -1
5 -1 -1
输出样例:
4 2 1 3 5
C++ 代码
相关问题
6-1 二叉树的遍历 (50 分)
好的,我知道了。这是一道关于二叉树遍历的问题。二叉树的遍历有三种方式:前序遍历、中序遍历和后序遍历。其中,前序遍历的顺序是先访问根节点,再访问左子树,最后访问右子树;中序遍历的顺序是先访问左子树,再访问根节点,最后访问右子树;后序遍历的顺序是先访问左子树,再访问右子树,最后访问根节点。
下面是一个二叉树的例子:
```
1
/ \
2 3
/ \ / \
4 5 6 7
```
对于这个二叉树,它的前序遍历结果为:1 2 4 5 3 6 7;中序遍历结果为:4 2 5 1 6 3 7;后序遍历结果为:4 5 2 6 7 3 1。
你可以使用递归或者迭代的方式实现二叉树的遍历。下面是一个使用递归实现前序遍历的示例代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def preorderTraversal(self, root: TreeNode) -> List[int]:
if not root:
return []
res = [root.val]
res += self.preorderTraversal(root.left)
res += self.preorderTraversal(root.right)
return res
```
6-1 二叉树的遍历c语言代码
以下是二叉树的遍历(先序、中序、后序)的C语言代码示例:
1.先序遍历
void preOrder(struct TreeNode* root){
if(root == NULL)
return;
printf("%d ", root->val);
preOrder(root->left);
preOrder(root->right);
}
2.中序遍历
void inOrder(struct TreeNode* root){
if(root == NULL)
return;
inOrder(root->left);
printf("%d ", root->val);
inOrder(root->right);
}
3.后序遍历
void postOrder(struct TreeNode* root){
if(root == NULL)
return;
postOrder(root->left);
postOrder(root->right);
printf("%d ", root->val);
}