[问题描述] 建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。
[基本要求] 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。
[测试数据] 1 2 3 0 0 4 5 0 7 0 0 6 0 0 0
建立二叉树:
先序遍历:
中序遍历:
后序遍历:
总代码:
[基本要求] 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。
[测试数据] 1 2 3 0 0 4 5 0 7 0 0 6 0 0 0
则输出结果为 先序:1 2 3 4 5 7 6 中序:3 2 5 7 4 6 1 后序:3 7 5 6 4 2 1
二叉树节点的建立:
C++ Code
1
2 3 4 5 |
typedef struct BiTNode
{ int data; struct BiTNode *lchild, *rchild; }BiTNode ,*BiTree; |
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
BiTree creatbitree()
{ BiTree T; int p; scanf("%d",&p); if(p==0) T=NULL; else { T=(BiTNode * )malloc(sizeof(BiTNode)); T->data=p; T->lchild=creatbitree(); T->rchild=creatbitree(); } return T; } |
C++ Code
1
2 3 4 5 6 7 8 9 |
void preOrder(BiTree T)
{ if(T!=NULL) { printf("%d",T->data); preOrder(T->lchild); preOrder(T->rchild); } } |
C++ Code
1
2 3 4 5 6 7 8 9 10 |
void inOrder(BiTree T)
{ if(T!=NULL) { inOrder(T->lchild); printf("%d",T->data); inOrder(T->rchild); } } |
C++ Code
1
2 3 4 5 6 7 8 9 10 |
void postOrder(BiTree T)
{ if(T!=NULL) { postOrder(T->lchild); postOrder(T->rchild); printf("%d",T->data); } } |
C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
#include<bits/stdc++.h>
using namespace std; typedef struct BiTNode { int data; struct BiTNode *lchild, *rchild; }BiTNode ,*BiTree; BiTree creatbitree() { BiTree T; int p; scanf("%d",&p); if(p==0) T=NULL; else { T=(BiTNode * )malloc(sizeof(BiTNode)); T->data=p; T->lchild=creatbitree(); T->rchild=creatbitree(); } return T; } void preOrder(BiTree T) { if(T!=NULL) { printf("%d ",T->data); preOrder(T->lchild); preOrder(T->rchild); } } void inOrder(BiTree T) { if(T!=NULL) { inOrder(T->lchild); printf("%d ",T->data); inOrder(T->rchild); } } void postOrder(BiTree T) { if(T!=NULL) { postOrder(T->lchild); postOrder(T->rchild); printf("%d ",T->data); } } int main() { BiTree ta; ta=creatbitree(); printf("xian xu bian li\n"); preOrder(ta); printf("\n"); printf("zhong xu bian li\n"); inOrder(ta); printf("\n"); printf("hou xu bian li \n"); postOrder(ta); return 0; } |