二叉树

Posted coodyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树相关的知识,希望对你有一定的参考价值。

  1 #include<iostream>
  2 #include<cstdio>
  3 #include<cmath>
  4 #include<string>
  5 #include<cstring>
  6 #include<algorithm>
  7 #include<cstdlib>
  8 #define OVERFLOW 3
  9 using namespace std;
 10 typedef char TElemType;
 11 TElemType ch;
 12 typedef struct BiTNode
 13 {
 14     TElemType data;
 15     struct BiTNode *lchild,*rchild;
 16 }BiTNode,*BiTree;
 17 
 18 
 19 //按前序输入二叉树中结点的值(一个字符)
 20 //#表示空树,构造二叉链表表示二叉树T
 21 void CreateBiTree(BiTree &T)
 22 {
 23     if(ch==\n)
 24         return;
 25     scanf("%c",&ch);
 26     if(ch==#)
 27         T=NULL;
 28     else{
 29         T=(BiTree)malloc(sizeof(BiTNode));
 30         (T)->data=ch;
 31         CreateBiTree(T->lchild);
 32         CreateBiTree(T->rchild);
 33     }
 34 }
 35 
 36 void PreOrder(BiTree T)//前序遍历二叉树
 37 {
 38     if(T!=NULL)
 39     {
 40         printf("%c",T->data);
 41         PreOrder(T->lchild);
 42         PreOrder(T->rchild);
 43     }
 44 }
 45 void InOrder(BiTree T)//中序遍历二叉树
 46 {
 47     if(T!=NULL)
 48     {
 49 
 50         InOrder(T->lchild);
 51         printf("%c",T->data);
 52         InOrder(T->rchild);
 53     }
 54 }
 55 void PostOrder(BiTree T)//后序遍历二叉树
 56 {
 57     if(T!=NULL)
 58     {
 59         PostOrder(T->lchild);
 60         PostOrder(T->rchild);
 61         printf("%c",T->data);
 62     }
 63 }
 64 int cnt=0;
 65 int countNode(BiTree T)//求二叉树中节点的个数
 66 {
 67     if(T)
 68     {
 69         cnt++;
 70         countNode(T->lchild);
 71         countNode(T->rchild);
 72     }
 73     return cnt;
 74 }
 75 
 76 
 77 int depthval=0;
 78 int dl=0;
 79 int dr=0;
 80 int Depth(BiTree T)//求二叉树的高度
 81 {
 82     if(!T)
 83         return 0;
 84     else
 85     {
 86         dl=Depth(T->lchild);
 87         dr=Depth(T->rchild);
 88         depthval=1+(dl>dr?dl:dr);
 89         return depthval;
 90     }
 91 }
 92 int main()
 93 {
 94     BiTree T;
 95     CreateBiTree(T);
 96     PreOrder(T);
 97     cout<<endl;
 98     InOrder(T);
 99     cout<<endl;
100     PostOrder(T);
101     cout<<endl;
102     return 0;//124##5##3##
103 }

 

以上是关于二叉树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构 二叉树

数据结构二叉树经典基础习题

数据结构 二叉树的简单理解和代码实现

用c语言写二叉树,源代码。

数据结构中二叉树的顺序存储结构代码怎么编写?

二叉树练习题