C語言資料結構——分析二叉樹的相似性
阿新 • • 發佈:2018-12-26
程式碼比較簡單,瀟小白就直接放程式碼啦!如果有什麼問題歡迎在下方評論哦!讓我們一起進步,向大佬進發!
程式碼如下:
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
typedef char ElemType;
typedef struct node
{
ElemType data; //資料元素
struct node *lchild; //指向左孩子
struct node *rchild; //指向右孩子
}*BitTree;
void CreatBiTree(BitTree *bt)
{
char ch;
ch=getchar();
if (ch=='#')
*bt=NULL;
else
{
*bt=(BitTree)malloc(sizeof(BitTree));
(*bt)->data=ch;
CreatBiTree(&((*bt)->lchild));
CreatBiTree(&((*bt)->rchild));
}
}
int Like(BitTree b1,BitTree b2)
{
int like1,like2;
if(b1==NULL&&b2==NULL)
return 1;
else if(b1==NULL||b2==NULL)
return 0;
else
{
like1=Like(b1->lchild,b2->lchild);
like2=Like(b1->rchild,b2->rchild);
return (like1&&like2);
}
}
void main()
{
BitTree T1,T2;
int treeleaf;
printf("請先輸入二叉樹A中的元素(以擴充套件先序遍歷序列輸入其中,其中#代表空子樹):\n" );
CreatBiTree(&T1);
getchar();
printf("請輸入二叉樹B中的元素(以擴充套件先序遍歷序列輸入其中,其中#代表空子樹):\n");
CreatBiTree(&T2);
treeleaf=Like(T1,T2);
if(treeleaf)
printf("A與B相似\n");
else if(treeleaf==0)
printf("A與B不相似\n");
}
執行結果如下:
因為瀟小白也是一個程式碼初期學習者,所以寫的都是比較簡單的程式,希望大家不要嫌棄哦,小編也會繼續為大家呈現優秀的程式碼的!謝謝大家的支援!