二叉樹的相關操作:包括先序序列+中序序列建樹丶後序序列+中序序列建樹丶層次序列+中序序列建樹;先序遍歷丶中序遍歷丶後序遍歷丶層次遍歷;二叉樹的深度及最大寬度;度分別為0,1,2的節點個數以及總結點個數
#include
#include
#include
#include
//二叉樹節點結構體
struct binarytreenode;
//二叉樹1中根序列
char midorder1[9]=;
//二叉樹1後根序列
char postorder1[9]=;
//二叉樹1層次序列
char cengorder1[9]=;
//二叉樹2先根序列
char preorder2[8]=;
//二叉樹2中根序列
char midorder2[8]=;
//二叉樹2後根序列
char postorder2[8]=;
//二叉樹2層次序列
char cengorder2[8]=;
//二叉樹3先根序列
char preorder3[9]=;
//二叉樹3中根序列
char midorder3[9]=;
//二叉樹3後根序列
char postorder3[9]=;
//二叉樹3層次序列
char cengorder3[9]=;
//先根序列+中根序列建樹1
printf("先根序列+中根序列建樹1\n");
binarytreenode* root1=construct1(preorder1,midorder1,8);
//先序遍歷樹1
printf("該二叉樹的先序遍歷為:");
preorderrecursion(root1);
printf("\n");
//中序遍歷樹1
printf("該二叉樹的中序遍歷為:");
midorderrecursion(root1);
printf("\n");
//後序遍歷樹1
printf("該二叉樹的後序遍歷為:");
postorderrecursion(root1);
printf("\n");
//層次遍歷樹1
printf("該二叉樹的層次遍歷為:");
breadthfirstorder(root1);
printf("\n");
//二叉樹1的深度
depth=bitreedepth(root1);
printf("該二叉樹的深度為%d\n",depth);
//二叉樹1的最大寬度
width=width(root1);
printf("該二叉樹的最大寬度為%d\n",width);
//二叉樹1度為0的節點個數
num0=nodenumber_0(root1);
printf("該二叉樹度為0的節點個數為%d\n",num0);
//二叉樹1度為1的節點個數
num1=nodenumber_1(root1);
printf("該二叉樹度為1的節點個數為%d\n",num1);
//二叉樹1度為2的節點個數
num2=nodenumber_2(root1);
printf("該二叉樹度為2的節點個數為%d\n",num2);
//二叉樹1總結點個數
sum=num0+num1+num2;
printf("該二叉樹度的總節點個數為%d\n",sum);
printf("\n");
// 後根序列+中根序列建樹2
printf("後根序列+中根序列建樹2\n");
binarytreenode* root2=construct2(postorder2,midorder2,7);
//先序遍歷樹2
printf("該二叉樹的先序遍歷為:");
preorderrecursion(root2);
printf("\n");
//中序遍歷樹2
printf("該二叉樹的中序遍歷為:");
midorderrecursion(root2);
printf("\n");
//後序遍歷樹2
printf("該二叉樹的後序遍歷為:");
postorderrecursion(root2);
printf("\n");
//層次遍歷樹2
printf("該二叉樹的層次遍歷為:");
breadthfirstorder(root2);
printf("\n");
//二叉樹2的深度
depth=bitreedepth(root2);
printf("該二叉樹的深度為%d\n",depth);
//二叉樹2的最大寬度
width=width(root2);
printf("該二叉樹的最大寬度為%d\n",width);
//二叉樹2度為0的節點個數
num0=nodenumber_0(root2);
printf("該二叉樹度為0的節點個數為%d\n",num0);
//二叉樹2度為1的節點個數
num1=nodenumber_1(root2);
printf("該二叉樹度為1的節點個數為%d\n",num1);
//二叉樹2度為2的節點個數
num2=nodenumber_2(root2);
printf("該二叉樹度為2的節點個數為%d\n",num2);
//二叉樹2總結點個數
sum=num0+num1+num2;
printf("該二叉樹度的總節點個數為%d\n",sum);
printf("\n");
//層次序列+中根序列建樹3
printf("層次序列+中根序列建樹3\n");
binarytreenode* root3;
root3=(binarytreenode*)malloc(sizeof(binarytreenode));
construct3(cengorder3,midorder3,root3);
//先序遍歷樹3
printf("該二叉樹的先序遍歷為:");
preorderrecursion(root3);
printf("\n");
//中序遍歷樹3
printf("該二叉樹的中序遍歷為:");
midorderrecursion(root3);
printf("\n");
//後序遍歷樹3
printf("該二叉樹的後序遍歷為:");
postorderrecursion(root3);
printf("\n");
//層次遍歷樹3
printf("該二叉樹的層次遍歷為:");
breadthfirstorder(root3);
printf("\n");
//二叉樹3的深度
depth=bitreedepth(root3);
printf("該二叉樹的深度為%d\n",depth);
//二叉樹3的最大寬度
width=width(root3);
printf("該二叉樹的最大寬度為%d\n",width);
//二叉樹3度為0的節點個數
num0=nodenumber_0(root3);
printf("該二叉樹度為0的節點個數為%d\n",num0);
//二叉樹3度為1的節點個數
num1=nodenumber_1(root3);
printf("該二叉樹度為1的節點個數為%d\n",num1);
//二叉樹3度為2的節點個數
num2=nodenumber_2(root3);
printf("該二叉樹度為2的節點個數為%d\n",num2);
//二叉樹3總結點個數
sum=num0+num1+num2;
printf("該二叉樹度的總節點個數為%d\n",sum);
return 0;
執行結果
二叉樹 二叉樹的相關操作
遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...
C 二叉樹相關操作
c 實現二叉樹的相關操作,包括遞迴和非遞迴方式。struct treenode 遍歷順序 根左右。遞迴方式 description 前序遍歷 遞迴 param root return void preorderrecur treenode root cout root val 前序遍歷當前結點 pr...
C 二叉樹的相關操作
include define maxsize 20 using namespace std typedef char telemtype 二叉樹的順序儲存表示 typedef struct sqbtree 二叉樹的二叉鍊錶表示 typedef struct node bitnode,bintree ...