用c语言编写程序,已知一棵颗二叉树的后序和中序,创建这棵二叉树,并输出先序遍历的顺序
时间: 2023-05-22 11:04:47 浏览: 104
好的,可以的。这个问题的解法是通过后序遍历和中序遍历来构建二叉树,然后再通过先序遍历输出整棵树的结构。以下是部分代码示例:
```
struct TreeNode* buildTree(int* inorder, int inorderSize, int* postorder, int postorderSize){
if(inorderSize == 0 || postorderSize == 0) {
return NULL;
}
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = postorder[postorderSize-1];
int rootIndex = 0;
for(int i=0; i<inorderSize; i++) {
if(inorder[i] == root->val) {
rootIndex = i;
break;
}
}
root->left = buildTree(inorder, rootIndex, postorder, rootIndex);
root->right = buildTree(inorder + rootIndex + 1, inorderSize - rootIndex - 1, postorder + rootIndex, postorderSize - rootIndex -1);
return root;
}
void preorderTraversal(struct TreeNode* root){
if(root != NULL) {
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
```
这里我们首先定义了两个数组(inorder 和 postorder)来储存后序遍历和中序遍历的节点数据。然后通过递归函数 buildTree() 来构建整棵树,最后再通过递归函数 preorderTraversal() 输出先序遍历的结果。希望我的解答能够帮到你!
阅读全文