#include
#include
typedef struct btree
btr,*pbtr;
typedef struct btrst
stack,*pstack;
pbtr bitree=null;
/*函式功能:實現非遞迴建立二叉樹
函式原型:void creat_btree(int *a,int size)
函式引數:int *a :儲存二叉樹節點的陣列首位址
int size:節點數目
函式返回值:void
優點:建立的二叉樹按中序遍歷後:是從小到大有序的可以是一種排序演算法
*/void creat_btree(int *a,int size)
}else
while(1)
else
}else
}else
else
}else
}
}} }/*
函式功能:實現遞迴前序遍歷二叉樹
函式原型:void preorder(pbtr head)
函式引數:pbtr :儲存二叉樹根節點
函式返回值:void
*/void preorder(pbtr p)
}/*函式功能:實現遞迴中序遍歷二叉樹
函式原型:void midorder(pbtr head)
函式引數:pbtr :儲存二叉樹根節點
函式返回值:void
*/void midorder(pbtr p)
}/*函式功能:實現遞迴中序遍歷二叉樹
函式原型:void postorder(pbtr head)
函式引數:pbtr :儲存二叉樹根節點
函式返回值:void
*/void postorder(pbtr p)
}/*函式功能:遞迴求二叉樹的深度
函式原型:int btreedepth(pbtr head)
函式引數:pbtr :儲存二叉樹根節點
函式返回值:int :二叉樹的深度
*/int btreedepth(pbtr head)
else
else
}return h;
}/*主函式 main()作測試用*/
#define n 12
int main()
;printf("非遞迴建立建立二叉樹..../n");
creat_btree(a,n);
printf("前序遍歷: ");
preorder(bitree);
printf("/n非遞迴建立建立二叉樹後中序遍歷就是按照由小到大排序");
printf("/n中序遍歷: ");
midorder(bitree);
printf("/n後續遍歷: ");
postorder(bitree);
printf("/n二叉樹的深度是:/n");
printf("%4d/n",btreedepth(bitree));
getchar();
}
二叉樹,排序二叉樹
說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...
排序二叉樹or搜尋二叉樹or查詢二叉樹
排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...
排序二叉樹or搜尋二叉樹or查詢二叉樹
排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...