设计一棵二叉树(要求不少于4层, 10个结点)解决办法
设计一棵二叉树(要求不少于4层, 10个结点)
请给出程序!!!编程打印该树的先序、中序、后序遍历序列。
------解决方案--------------------
请给出程序!!!编程打印该树的先序、中序、后序遍历序列。
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <malloc.h> //二叉树类型定义 typedef int ElemType; typedef struct tree { ElemType data; struct tree *lchild; struct tree *rchild; }biTreeNode, *biTree; /* *功能:创建二叉树(先序) *参数:二叉树根结点地址的地址 */ void createBiTree(biTree *root) { ElemType tmp; scanf("%d", &tmp); if(tmp == 0) { *root = NULL; return; } *root = (biTree)malloc(sizeof(biTreeNode)); if(*root == NULL) return; (*root)->data = tmp; createBiTree(&(*root)->lchild); createBiTree(&(*root)->rchild); } /* *功能:访问二叉树结点 *参数:二叉树根结点地址 */ void visit(biTree root) { printf("%d ", root->data); } /* *功能:先序遍历二叉树 *参数:二叉树根结点地址 */ void preOrderTraverse(biTree root) { if(root == NULL) return; visit(root); preOrderTraverse(root->lchild); preOrderTraverse(root->rchild); } /* *功能:中序遍历二叉树 *参数:二叉树根结点地址 */ void inOrderTraverse(biTree root) { if(root == NULL) return; inOrderTraverse(root->lchild); visit(root); inOrderTraverse(root->rchild); } /* *功能:后序遍历二叉树 *参数:二叉树根结点地址 */ void postOrderTraverse(biTree root) { if(root == NULL) return; postOrderTraverse(root->lchild); postOrderTraverse(root->rchild); visit(root); } int main() { biTree tree; createBiTree(&tree); printf("先序遍历:\n"); preOrderTraverse(tree); printf("\n中序遍历:\n"); inOrderTraverse(tree); printf("\n后序遍历:\n"); postOrderTraverse(tree); printf("\n"); return 0; } 1 2 4 8 0 0 9 0 0 5 10 0 0 11 0 0 3 6 12 0 0 13 0 0 7 14 0 0 15 0 0 先序遍历: 1 2 4 8 9 5 10 11 3 6 12 13 7 14 15 中序遍历: 8 4 9 2 10 5 11 1 12 6 13 3 14 7 15 后序遍历: 8 9 4 10 11 5 2 12 13 6 14 15 7 3 1 数据要自己输入